# 커밋 요청 뒤의 결과 판정 ## Alternative text 커밋 요청에서 시작해 provider commit 을 거쳐 Committed, CommittedWithPostCommitFailure, DeterminateRollback, Indeterminate 네 결과로 갈라지는 흐름도 ## Long description tracker 가 COMMIT_REQUESTED 를 관측한 뒤 provider commit 을 호출한다. 예외가 없으면 Committed 다. RuntimeException 이 오면 먼저 commitAcknowledged 를 보고, 이미 afterCommit 이 왔으면 CommittedWithPostCommitFailure 다. 그렇지 않으면 rolledBack 과 UnexpectedRollbackException 과 replay 후보 여부를 보고, 하나라도 성립하면 DeterminateRollback 이다. 어느 것도 성립하지 않으면 Indeterminate 로 남는다. ## Elements and evidence - **COMMIT_REQUESTED** (process): No additional description. Evidence: L397–L397. - **provider commit** (service): No additional description. Evidence: L398–L400. - **commitAcknowledged** (process): No additional description. Evidence: L401–L401. - **rolledBack · replay 후보** (process): No additional description. Evidence: L404–L406. - **Committed** (result): No additional description. Evidence: L388–L388, L396–L400. - **CommittedWithPostCommitFailure** (result): No additional description. Evidence: L402–L402. - **DeterminateRollback** (result): No additional description. Evidence: L407–L407. - **Indeterminate** (result): No additional description. Evidence: L391–L391, L409–L409. ## Relationships - **commitAcknowledged → CommittedWithPostCommitFailure:** afterCommit 도착. Evidence: L401–L402. - **COMMIT_REQUESTED → provider commit:** commit(status). Evidence: L397–L399. - **provider commit → Committed:** 예외 없음. Evidence: L388–L388, L396–L400. - **rolledBack · replay 후보 → Indeterminate:** 판정 근거 없음. Evidence: L409–L409. - **commitAcknowledged → rolledBack · replay 후보:** 미도착. Evidence: L403–L404. - **rolledBack · replay 후보 → DeterminateRollback:** 하나라도 성립. Evidence: L404–L407. - **provider commit → commitAcknowledged:** RuntimeException. Evidence: L400–L401.