fix(generation): repair articles stuck in generating when latest task is terminal
The state-consistency worker now detects articles still flagged as generating whose latest generation_task is already failed or completed (with a version) and aligns the article status to the terminal task, invalidating article caches on the way out. Adds supporting partial indexes and switches UpdateGenerationTaskStatus to COALESCE started_at and completed_at so partial status updates don't wipe the timestamps.
This commit is contained in:
@@ -40,8 +40,8 @@ WHERE tenant_id = sqlc.arg(tenant_id)
|
||||
|
||||
-- name: UpdateGenerationTaskStatus :exec
|
||||
UPDATE generation_tasks SET status = sqlc.arg(status)::text, error_message = sqlc.arg(error_message),
|
||||
started_at = sqlc.arg(started_at),
|
||||
completed_at = sqlc.arg(completed_at),
|
||||
started_at = COALESCE(sqlc.arg(started_at), started_at),
|
||||
completed_at = COALESCE(sqlc.arg(completed_at), completed_at),
|
||||
lease_token = CASE WHEN sqlc.arg(status)::text IN ('completed', 'failed') THEN NULL ELSE lease_token END,
|
||||
lease_owner = CASE WHEN sqlc.arg(status)::text IN ('completed', 'failed') THEN NULL ELSE lease_owner END,
|
||||
lease_expires_at = CASE WHEN sqlc.arg(status)::text IN ('completed', 'failed') THEN NULL ELSE lease_expires_at END,
|
||||
|
||||
Reference in New Issue
Block a user