실패 throwable과 cleanup failure를 함께 보존한다

rollback 또는 상태 복원 중 새 예외가 발생해도 최초 업무 실패를 덮지 않고 cleanup 실패를 suppressed chain에 붙인다.

PRIMARY

최초 업무 Throwable

SQL exception 또는 Runtime error가 transaction 실패를 시작한다.

CLEANUP

완료 처리

rollback·state restore·close를 차례로 시도한다.

ROLLBACK

실패 시 suppressed

rollback 예외를 최초 cause에 추가한다.

RESTORE

실패 시 suppressed

autoCommit 복원 예외도 잃지 않는다.

CLOSE

실패 시 suppressed

resource 해제 오류를 함께 보존한다.

RETHROW

Primary 유지

호출자에게 최초 업무 실패를 다시 던진다.

핵심: 조사 순서를 지키려면 업무 실패가 항상 primary이고 cleanup 실패는 보조 증거로 남아야 한다.