가상의 작업 API에 서버 두 대와 요청 식별자를 유일 키로 둔 PostgreSQL 18 테이블이 있어요. 현재 설계는 식별자만 저장하고, 유일성 충돌이 나면 언제나 “이미 접수됨”이라고 응답해요. 어느 서버에서든 이 충돌을 만날 수 있어요.
첫 클라이언트가 시간 초과 뒤에 재시도해요. 페이로드는 달라졌을 수 있어요. 첫 시도가 시간 초과 전에 외부 동작을 일으켰을 수도 있고요.
ON CONFLICT DO NOTHING은 충돌하는 행의 삽입을 피하게 해 줘요. 두 페이로드를 비교하거나 외부 동작의 결과를 확인해 주지는 않아요. Go 요청 컨텍스트를 취소했다고 원격 작업이 없었다고 볼 수도 없어요.
두 번째 서버가 의미 있는 응답을 하려면 어떤 기록을 영속적으로 남겨야 할까요? 같은 입력의 재시도, 같은 식별자에 다른 입력이 온 경우, 결과를 아직 알 수 없는 작업을 구분해서 검토하고 싶어요.