--- kind: CASE slug: messaging-outbox-jdbc-postgresql-f05 title: 구세대 전이 메서드가 신세대와 다른 행 상태를 남긴다 topic: runtime-contract-correctness project: clean-architecture-backend-template status: 게시 전 sourceRevision: 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916 rootTreeNode: case:messaging-outbox-jdbc-postgresql-f05 evidenceCapturedOn: 2026-09-01 assets: - key: messaging-outbox-jdbc-postgresql-f05 file: ../../../final/evidence/rendered/messaging-outbox-jdbc-postgresql-f05.svg evidence: - ../../../final/evidence/raw/messaging-outbox-jdbc-postgresql-f05.txt source: - 원본 분석 절은 final/document.md#a19-messaging-outbox-jdbc-postgresql#L917 이다. module: messaging-outbox-jdbc-postgresql priority: P3 --- # 구세대 전이 메서드가 신세대와 다른 행 상태를 남긴다 markPublished(MessageId, Instant) 는 lease_owner 와 next_attempt_at 을 지우지 않는다. markPublished(OutboxLease, Instant) 는 지운다. ## 문제 markPublished(MessageId, Instant) 는 lease_owner 와 next_attempt_at 을 지우지 않는다. markPublished(OutboxLease, Instant) 는 지운다. ## 결론 markAmbiguous/markFailed 도 같다. 두 컬럼은 청구 술어와 부분 인덱스가 읽는 값이다. 이 저장소에 구세대를 부르는 프로덕션 코드는 없다. 그러나 포트에 남아 있고 @Deprecated 도 아니므로, 외부 구현이나 향후 코드가 부를 수 있다. 최소한 @Deprecated 와 "신세대를 쓰라"는 문장이 필요하고, 더 나은 것은 제거다. ## 검증 환경 OpenJDK : 21.0.12 java -version 으로 확인 Gradle : 9.0.0 src/gradle/wrapper/gradle-wrapper.properties 의 distributionUrl 로 확인 확인 방식 : 두 오버로드의 SET 절 대조와 그 컬럼을 읽는 청구 술어·부분 인덱스 확인 소스 수정 : x ## 재현 조건 원문은 final/document.md#a19-messaging-outbox-jdbc-postgresql#L917 에 있다. ## 본문 `markPublished(MessageId, Instant)` 는 `lease_owner` 와 `next_attempt_at` 을 지우지 않는다. `markPublished(OutboxLease, Instant)` 는 지운다. `markAmbiguous`/`markFailed` 도 같다. ## 두 오버로드가 지우는 컬럼 :::evidence key="messaging-outbox-jdbc-postgresql-f05" alt="분석 문서 final/document.md#a19-messaging-outbox-jdbc-postgresql 에서 이 기록의 근거 절을 그대로 잘라낸 15줄. 코드베이스를 측정한 것이 아니라 원본 판정이 무엇을 적었는지를 보여 준다." caption="final/document.md#a19-messaging-outbox-jdbc-postgresql 발췌 — 15줄" zoom="true" ::: ## 두 컬럼은 청구 술어와 부분 인덱스가 읽는 값이다 이 저장소에 구세대를 부르는 프로덕션 코드는 없다. 그러나 포트에 남아 있고 `@Deprecated` 도 아니므로, 외부 구현이나 향후 코드가 부를 수 있다. 최소한 `@Deprecated` 와 "신세대를 쓰라"는 문장이 필요하고, 더 나은 것은 제거다. ## 확인하지 못한 것 구세대 메서드가 실제로 호출되는 배포가 있는지 확인하지 않았다. 이 저장소에는 없다.