#transaction
글
-
Kafka 소스 파헤치기 12: 멱등성과 트랜잭션 — 정확히 한 번은 어떻게 만들어지나, 그리고 연재를 마치며
enable.idempotence=true 와 transactional.id 한 줄 뒤에서 무슨 일이 생기는지 소스로 따라갑니다. 브로커가 producer id·에포크·시퀀스로 재시도 중복을 가려내는 곳, 트랜잭션 코디네이터가 __transaction_state 에 상태를 적고 커밋·중단 마커(컨트롤 레코드)를 파티션마다 쓰게 하는 길, read_committed 컨슈머가 마지막 안정 오프셋(LSO)과 중단된 트랜잭션 목록으로 걸러 읽는 방법, 같은 transactional.id 의 옛 프로듀서를 에포크로 막는 펜싱을 맨 소켓·kafka-dump-log·kafka-transactions 예제로 확인합니다. 마지막 글이라 1~12편을 되짚으며 연재를 마칩니다.
-
MariaDB 소스 파헤치기 11: InnoDB 2 — 트랜잭션, MVCC, undo, 잠금
COMMIT 한 줄이 서버 계층의 ha_commit_trans()에서 InnoDB의 trx_t::commit()까지 가는 길, REPEATABLE READ가 옛 값을 보여 주는 ReadView와 undo 사슬, 아무도 안 보는 옛 판을 치우는 purge, 그리고 행 잠금·갭 잠금·잠금 대기·교착 탐지를 기준 커밋의 소스로 따라갑니다. 두 세션 예제로 스냅샷, 잠금 대기, 교착, history list length를 직접 확인합니다.
-
Spring 소스 파헤치기 17: @Transactional — 트랜잭션은 누가 열고 누가 닫나
메서드에 @Transactional 한 줄을 붙이면 누가 트랜잭션을 열고, 예외가 나면 누가 롤백하고, 정상이면 누가 커밋하는지 실제 소스로 따라갑니다. PlatformTransactionManager·TransactionDefinition·TransactionStatus 세 인터페이스, @EnableTransactionManagement가 등록하는 빈, TransactionInterceptor가 호출을 가로채는 순서, 전파 속성이 갈리는 자리, 커넥션이 ThreadLocal에 묶이는 이유, 그리고 체크 예외는 롤백되지 않는다·안쪽이 실패하면 바깥이 UnexpectedRollbackException을 받는다 같은 함정을 예제로 확인합니다.