42장. Multi-document Transaction의 Unknown Commit을 처리한다
transaction callback은 transient error와 unknown commit result를 구분해야 한다. commit 응답이 끊겼다고 전체 업무를 새 id로 반복하면 중복 효과가 생긴다. command id와 업무 key로 결과를 조회하고 driver의 권장 retry pattern을 version에 맞춰 쓴다. transaction 안에서 느린 외부 API를 호출하지 않는다.
실습은 Order와 Outbox를 transaction으로 쓰고 commit 뒤 connection을 끊는다. 재시도는 기존 order/outbox를 반환해야 한다. transaction lifetime, document contention, oplog와 replica lag을 관측한다. transaction이 관계형 schema를 그대로 옮기는 면허가 아니다.