将 X-Async 调度改为逐任务阻塞协议,区分全局容量、平台容量、用户组 FIFO、任务级异常和系统级故障,避免单个历史毒任务触发整批回滚。\n\n新增持久化退避、单任务 CAS 重选、幂等终态事务、固定标签指标和损坏快照自愈,并修复 Worker 从 preparing 直接进入 finalizing 时的自等待死锁。\n\n验证:API 全量测试、PostgreSQL 集成场景、race、go vet、govulncheck、pnpm lint/test/build、Compose 与发布脚本测试通过;pnpm audit 命中未改动的 Nx 工具链既有漏洞。
18 lines
832 B
SQL
18 lines
832 B
SQL
ALTER TABLE gateway_task_admissions
|
|
ADD COLUMN IF NOT EXISTS dispatch_next_at timestamptz NOT NULL DEFAULT now(),
|
|
ADD COLUMN IF NOT EXISTS dispatch_failure_count integer NOT NULL DEFAULT 0,
|
|
ADD COLUMN IF NOT EXISTS dispatch_last_outcome text,
|
|
ADD COLUMN IF NOT EXISTS dispatch_last_error_code text,
|
|
ADD COLUMN IF NOT EXISTS dispatch_last_error_at timestamptz;
|
|
|
|
ALTER TABLE gateway_task_admissions
|
|
ADD CONSTRAINT gateway_task_admissions_dispatch_failure_count_check
|
|
CHECK (dispatch_failure_count >= 0) NOT VALID;
|
|
|
|
ALTER TABLE gateway_task_admissions
|
|
VALIDATE CONSTRAINT gateway_task_admissions_dispatch_failure_count_check;
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_task_admissions_async_dispatch_due
|
|
ON gateway_task_admissions(dispatch_next_at, priority, enqueued_at, task_id)
|
|
WHERE status = 'waiting' AND mode = 'async';
|