Spring Batch 기반의 배치 작업을 수행하던 중 다음과 같은 예외가 발생했습니다. com.sample.common.exception.CustomException: 테스트용 오류 발생 예시입니다. at com.sample.batch.job.ExampleJob.lambda$1(ExampleJob.java:174) … at com.sample.SampleBatchApplication.main(SampleBatchApplication.java:118) 해당 Stack Trace를 보면 ExampleJob.lambda$1 메서드에서 CustomException이 발생했으며, 이 예외는 Spring Batch 내부 프로세스를 거쳐 main() 메서드까지 전파되었습니다. 이를 이해하기 위해 다음과 같은 예외 전달 순서를 주목할 수 있습니다: 더 읽기
JAVA
Kubernetes 환경에서 Spring Boot 배치 오류 전파 및 종료 코드 처리
1. 문제 상황 Spring Boot 기반 배치 애플리케이션을 실행하는 과정에서 오류 발생 시 CallRunner까지 예외 전파 및 종료 코드 처리가 제대로 이루어지지 않는 문제가 발생했다. 2. 원인 분석 3. 해결 방법 ✅ 1️⃣ 예외가 CallRunner까지 정상적으로 전파되도록 설정 ✅ 2️⃣ System.exit() 실행 위치 조정 ✅ 3️⃣ Kubernetes Pod 종료 상태 더 읽기
Spring Boot 비정상 종료 시 Kubernetes에서 CrashLoopBackOff 방지하는 방법
Spring Boot 애플리케이션을 Kubernetes 환경에서 실행할 때, 비정상 종료(System.exit(1)) 처리를 적절히 하지 않으면 두 가지 주요 문제가 발생할 수 있다. 이 문제는 Spring의 종료 프로세스를 올바르게 관리하지 않기 때문에 발생한다. 이를 해결하려면 비정상 종료 시에도 Spring의 컨텍스트 종료 이벤트(ContextClosedEventListener)를 정상적으로 실행하도록 설정해야 한다. 🚨 문제 원인 분석 1️⃣ IllegalStateException: ApplicationContext 더 읽기
Spring Batch 오류 전파 및 NOOP 해결 방법 (자동 실행 vs 수동 실행)
Spring Batch 실행 중 오류가 main()까지 전달되지 않는 문제와 NOOP 상태(All steps already completed or no steps configured for this job.) 발생 문제를 해결하는 방법을 정리합니다.자동 실행(Spring Boot spring.batch.job.enabled=true)과 수동 실행(spring.batch.job.enabled=false 후 JobLauncher 직접 호출) 방식에 맞게 정리하였습니다. 1. Spring Batch 오류 전파 문제 🔍 문제 상황 2. 자동 실행 더 읽기
AWS Aurora MariaDB에서 autocommit=false 설정 시 Spring Batch 중단 시 트랜잭션 롤백 여부
1. 문제 상황 Spring Batch에서 AWS Aurora MariaDB를 사용하고 있으며, autocommit=false로 설정된 상태에서 작업 중 Pod 또는 Node가 강제 종료되면 미처리된 데이터가 자동으로 롤백될까, 아니면 락이 걸린 상태로 남아 있을까? 2. Aurora MariaDB의 트랜잭션 롤백 동작 Aurora MariaDB는 클라이언트 세션이 비정상적으로 종료되면 해당 세션의 트랜잭션을 자동으로 롤백한다.즉, 다음과 같은 상황에서는 더 읽기
Spring Kafka Consumer에서 Payload 값이 null일 때 발생하는 오류 해결 방법
Kafka를 활용한 메시지 처리 중, Consumer가 null Payload를 수신하면서 다음과 같은 MethodArgumentNotValidException이 발생할 수 있습니다. Caused by: org.springframework.messaging.handler.annotation.support.MethodArgumentNotValidException: Could not resolve method parameter at index 0 …Payload value must not be empty 이 문제는 Kafka 메시지의 Payload가 null(KafkaNull)로 들어오는 경우 발생합니다. 이는 Kafka Producer가 null 값을 전송하거나, Tombstone 메시지(키에 대한 더 읽기
Java 정규식을 활용한 주소 유형 판별 및 문자열 마스킹 방법
📌 Java 정규식을 활용한 주소 유형 판별 및 문자열 마스킹 방법 Java를 사용하여 주소 유형(도로명 주소 vs 지번 주소)을 판별하고, 문자열 마스킹을 수행하는 방법을 정리합니다. 주소 데이터를 처리하는 과정에서 정규식(RegEx)을 활용하여 빠르고 정확하게 판별하는 방법을 배울 수 있습니다. 🔎 1. 주소 유형 판별 (도로명 vs 지번 주소) ✅ 주소 판별 더 읽기
Spring Batch 멀티스레드 처리 중 대기 상태 발생 및 트랜잭션 롤백 해결 방법
Spring Batch 환경에서 멀티스레드 처리 중 특정 스레드가 대기 상태에 빠지고, Pod가 계속 Running 상태가 되는 문제를 해결하는 방법을 정리합니다. 1️⃣ 문제 상황 2️⃣ 대기 상태가 발생하는 원인 분석 3️⃣ 해결 방법 ✅ 스레드 타임아웃 적용 ✅ 예외 발생 시 CountDownLatch.countDown() 보장 ✅ 대기 상태 감지 및 강제 종료 (shutdownNow() 더 읽기
Spring Batch 멀티스레드 환경에서 HikariCP Connection Leak 문제 해결 방법
🔹 개요Spring Batch에서 멀티스레드 환경을 사용한 후 HikariCP의 Connection Leak 경고가 발생하는 문제에 대해 분석하고 해결 방법을 정리합니다.특히 멀티스레드와 HikariCP의 connection-pool 설정, 트랜잭션 관리 방식, DAO 호출 구조가 Connection Leak에 미치는 영향을 집중적으로 다룹니다. 🔹 HikariCP 설정과 Connection Leak 원인 분석 사용된 HikariCP 설정은 다음과 같습니다. minimum-idle: 2 maximum-pool-size: 30 더 읽기
Spring Security & jOOQ with H2: 설정 및 문제 해결 가이드
Spring Security & jOOQ with H2: 설정 및 문제 해결 가이드 1. Spring Security 설정 Spring Boot 프로젝트에서 Spring Security를 설정하는 과정에서 몇 가지 문제가 발생할 수 있습니다. 주요 이슈와 해결 방법을 정리하겠습니다. 1.1. 기본 로그인 설정 변경 Spring Security는 기본적으로 로그인 페이지를 제공하지만, 이를 커스터마이징하려면 SecurityConfig 설정이 필요합니다. @Configuration@EnableWebSecuritypublic 더 읽기