- 파이프라인 락은
pipeline_locks테이블(DB 기반)로 관리한다. - 락 획득 시 만료된 동일 키를 정리한 뒤
INSERT ... ON CONFLICT DO NOTHING으로 단일 소유자를 보장한다. - 락 해제는
lock_key + lock_token일치 조건으로만 삭제하여 원자성을 보장한다. - 실행 중 프로세스가 중단되어도
expires_atTTL이 지나면 다음 실행이 락을 재획득할 수 있다.
- Command:
npm run test:lock:e2e - Required env:
DATABASE_URL
- 검증 항목:
- 동시 획득 시 1회만 성공
- stale token 해제 시 락 유지
- valid token 해제 시 락 삭제
- TTL 만료 후 재획득 가능