- Coalescing queue: use HasPendingTaskForIssue (queued/dispatched only) instead of HasActiveTaskForIssue so comments during a running task enqueue exactly one follow-up task that picks up all new comments. - Stale task cleanup: runtime sweeper now fails orphaned tasks when their runtime goes offline (daemon crash/network partition). - Cancel-aware daemon: handleTask checks task status after execution and discards results if the task was cancelled mid-run (e.g. reassign). - Terminal issue guard: ClaimTaskForRuntime auto-cancels pending tasks for done/cancelled issues instead of executing them. - Race condition safety net: unique partial index ensures at most one pending task per issue at the DB level.
5 lines
278 B
SQL
5 lines
278 B
SQL
-- Prevent duplicate pending tasks for the same issue (coalescing queue safety net).
|
|
-- At most one queued/dispatched task per issue at any time.
|
|
CREATE UNIQUE INDEX idx_one_pending_task_per_issue
|
|
ON agent_task_queue (issue_id)
|
|
WHERE status IN ('queued', 'dispatched');
|