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

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

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

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

Aurora MySQL·RDS MariaDB에서 락 대기 타임아웃과 트랜잭션 롤백 구분하기

내용 정정: 이전 글의 “Aurora MariaDB”는 서로 다른 엔진을 혼동한 표현입니다. Aurora는 MySQL·PostgreSQL 호환 엔진이며 RDS for MariaDB와 구분해야 합니다. 아래에서는 MySQL 계열 InnoDB의 락 대기와 롤백 범위를 설명합니다. 실제 운영 엔진·버전은 배포 환경에서 확인해야 합니다. AWS Aurora 공식 소개. 락을 기다리는 시간과 락을 보유하는 시간은 다릅니다 innodb_lock_wait_timeout은 다른 트랜잭션의 더 읽기

Aurora MySQL·RDS MariaDB에서 Spring Batch 강제 종료 시 롤백 확인하기

내용 정정: “Aurora MariaDB”는 정확한 엔진 명칭이 아닙니다. Aurora MySQL과 RDS for MariaDB를 구분하고, 아래 설명은 InnoDB 트랜잭션을 전제로 읽어야 합니다. AWS Aurora 공식 소개. Pod가 종료되면 즉시 롤백될까? autocommit=false 자체가 Pod 종료 감지 기능은 아닙니다. DB가 연결 종료를 감지하면 해당 세션의 미커밋 트랜잭션은 롤백 대상이 됩니다. 이미 커밋된 청크와 더 읽기

Spring Batch 멀티스레드 처리 중 대기 상태 발생 및 트랜잭션 롤백 해결 방법

Spring Batch 환경에서 멀티스레드 처리 중 특정 스레드가 대기 상태에 빠지고, Pod가 계속 Running 상태가 되는 문제를 해결하는 방법을 정리합니다. 1️⃣ 문제 상황 2️⃣ 대기 상태가 발생하는 원인 분석 3️⃣ 해결 방법 ✅ 스레드 타임아웃 적용 ✅ 예외 발생 시 CountDownLatch.countDown() 보장 ✅ 대기 상태 감지 및 강제 종료 (shutdownNow() 더 읽기