개별 항목 실패 시 해당 트랜잭션만 롤백 (TransactionTemplate 사용)

🧩 문제 현상 🔍 원인 분석 🛠 해결 방법 🧪 예시 적용 코드 (1000건씩 커밋) ✅ 적용 후 기대 효과 바깥 Tasklet 트랜잭션이 있을 때의 전파 조건은 Spring Batch Tasklet 트랜잭션 내 개별 항목 실패 시 커넥션 누수 방지 방법에서 이어집니다.

Spring Batch Tasklet 트랜잭션 내 개별 항목 실패 시 커넥션 누수 방지 방법

예외를 catch했다는 사실만으로 누수를 단정하지 않기 Tasklet 루프에서 예외를 잡고 다음 항목으로 진행하면 의도하지 않은 커밋이나 rollback-only 상태를 놓칠 수 있습니다. 그러나 catch 자체가 항상 커넥션 누수를 만드는 것은 아닙니다. Spring이 관리하는 트랜잭션과 직접 획득한 JDBC 자원의 소유권을 먼저 구분해야 합니다. 항목별 롤백의 전제 기본 TransactionTemplate의 REQUIRED는 바깥 트랜잭션에 참여할 더 읽기

Spring Batch에서 다중 DataSource 환경에서의 커넥션 누수 방지와 안정적인 트랜잭션 처리 방법

🔹 문제 배경 대규모 배치 시스템에서 master/slave로 분리된 DB 환경을 사용하는 경우,하나의 Step 내에서 slave로부터 읽고, master에 쓰는 구조가 필요하다.그러나 잘못된 트랜잭션 구성으로 인해 slave의 커넥션이 반환되지 않고 누수(leak)되는 문제가 발생할 수 있다. 🔹 해결 전략 🔹 핵심 코드 예시 ① 트랜잭션 분리용 유틸 컴포넌트 @Componentpublic class SampleSlaveTransactionSupport { private 더 읽기

Spring Batch Tasklet에서 예외 발생 시 Slave 커넥션 반환 실패 원인 분석

문제 요약 Spring Batch Tasklet 내부에서 슬레이브(readOnly) DataSource를 통해 조회를 수행 중 예외 발생 시, PlatformTransactionManager의 rollback 처리 후 커넥션이 반환되지 않는 문제가 발생하였습니다. 원인 분석 개선 방안 또는 명시적 반환 방식: 예외 처리와 수동 반환 조건의 정정된 설명은 Spring Batch Tasklet 트랜잭션 내 개별 항목 실패 시 커넥션 누수 더 읽기