Files
hyungi_document_server/migrations/117_queue_active_unique.sql
T
Hyungi Ahn f0c7d4c2c2 fix(queue): migration 117에서 DO $$ BEGIN 제거 (BEGIN 검증 회피)
_validate_sql_content가 PL/pgSQL의 BEGIN을 트랜잭션 제어문으로 오탐.
guard check를 제거하고 CREATE UNIQUE INDEX 자체의 중복 실패에 의존.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 08:38:49 +09:00

19 lines
770 B
SQL

-- Step 1: stale duplicate 삭제 (processing 10분+ 방치 + 같은 doc/stage에 pending 존재)
DELETE FROM processing_queue a
USING processing_queue b
WHERE a.document_id = b.document_id
AND a.stage = b.stage
AND a.status = 'processing'
AND a.started_at < NOW() - INTERVAL '10 minutes'
AND b.status = 'pending';
-- Step 2: 기존 constraint 제거
ALTER TABLE processing_queue
DROP CONSTRAINT processing_queue_document_id_stage_status_key;
-- Step 3: partial unique index (활성 행은 (document_id, stage)당 최대 1개)
-- 활성 중복이 남아있으면 여기서 자연스럽게 실패 → 수동 정리 후 재시도
CREATE UNIQUE INDEX uq_queue_active
ON processing_queue (document_id, stage)
WHERE status IN ('pending', 'processing');