This commit is contained in:
2026-06-20 19:16:44 +08:00
parent db3d030169
commit dbb87823e8
26 changed files with 676 additions and 115 deletions
+9 -6
View File
@@ -20,28 +20,31 @@ UPDATE jobs
)
RETURNING *;
-- name: CompleteJob :exec
-- name: CompleteJob :execrows
-- 围栏谓词:只有持有当前租约的 worker 才能写回,防止被 reaper 重新租出后旧 worker 覆盖新一轮状态。
UPDATE jobs
SET status='completed', completed_at=now(),
leased_at=NULL, leased_by=NULL, last_error=NULL,
updated_at=now()
WHERE id=$1;
WHERE id=$1 AND leased_by=$2 AND status='running';
-- name: FailJobWithRetry :exec
-- name: FailJobWithRetry :execrows
-- 围栏谓词同上。
UPDATE jobs
SET status='pending',
scheduled_at=$2,
leased_at=NULL, leased_by=NULL,
last_error=$3,
updated_at=now()
WHERE id=$1;
WHERE id=$1 AND leased_by=$4 AND status='running';
-- name: DeadLetterJob :exec
-- name: DeadLetterJob :execrows
-- 围栏谓词同上。
UPDATE jobs
SET status='dead', completed_at=now(),
leased_at=NULL, leased_by=NULL, last_error=$2,
updated_at=now()
WHERE id=$1;
WHERE id=$1 AND leased_by=$3 AND status='running';
-- name: GetJob :one
SELECT * FROM jobs WHERE id=$1;