AWS Aurora for MariaDB를 사용하다 보면 트랜잭션이 락을 점유한 상태로 오래 유지될 수 있습니다. 이렇게 되면 다른 트랜잭션이 대기해야 하며, 성능 저하나 데드락 문제가 발생할 수 있습니다. 이를 방지하기 위해 트랜잭션이 일정 시간 이상 락을 유지하면 자동으로 롤백되도록 설정하는 방법을 정리했습니다. 1. innodb_lock_wait_timeout 설정 (트랜잭션 대기 시간 제한) InnoDB에서 트랜잭션이 더 읽기
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 메시지(키에 대한 더 읽기
window.onload가 여러 번 호출될 수 있는 경우와 해결 방법
window.onload가 여러 번 호출될 수 있는 경우와 해결 방법
window.onload는 한 번만 실행될까? window.onload 이벤트는 일반적으로 페이지가 완전히 로드된 후 한 번만 실행됩니다. 하지만 특정한 경우에서는 여러 번 호출될 수도 있습니다. 이 글에서는 window.onload가 여러 번 실행될 수 있는 이유와 이를 방지하는 방법을 살펴보겠습니다.
window.onload가 여러 번 더 읽기
Java 정규식을 활용한 주소 유형 판별 및 문자열 마스킹 방법
Java 정규식을 활용한 주소 유형 판별 및 문자열 마스킹 방법 Java를 사용하여 주소 유형(도로명 주소 vs 지번 주소)을 판별하고, 문자열 마스킹을 수행하는 방법을 정리합니다. 주소 데이터를 처리하는 과정에서 정규식(RegEx)을 활용하여 빠르고 정확하게 판별하는 방법을 배울 수 있습니다.
1. 주소 유형 판별 (도로명 vs 지번 주소)
주소 판별 더 읽기
Spring Batch 멀티스레드 처리 중 대기 상태 발생 및 트랜잭션 롤백 해결 방법
Spring Batch 환경에서 멀티스레드 처리 중 특정 스레드가 대기 상태에 빠지고, Pod가 계속 Running 상태가 되는 문제를 해결하는 방법을 정리합니다. 문제 상황
대기 상태가 발생하는 원인 분석
해결 방법
스레드 타임아웃 적용
예외 발생 시 CountDownLatch.countDown() 보장
대기 상태 감지 및 강제 종료 (shutdownNow() 더 읽기
EKS CronJob에서 실행 시간이 지나면 자동으로 Pod 종료하는 방법
Kubernetes의 CronJob을 사용할 때, 실행 시간이 너무 길어지면 리소스를 낭비할 수 있습니다. 이를 방지하기 위해 activeDeadlineSeconds 옵션을 활용하면 일정 시간이 지나면 자동으로 Pod를 종료할 수 있습니다. activeDeadlineSeconds 옵션이란? activeDeadlineSeconds는 Job이 시작된 후 일정 시간이 지나면 강제 종료되는 기능입니다. 이를 설정하면, 지정된 시간이 초과되었을 때 Kubernetes가 자동으로 해당 Pod를 종료합니다. 더 읽기
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 더 읽기
H2 메모리 DB와 jOOQ 코드 생성 문제 해결 가이드
H2 데이터베이스를 메모리 모드로 사용하면서 jOOQ 코드 생성을 진행하려면 특정한 순서대로 작업해야 합니다.이 글에서는 발생할 수 있는 오류와 해결 방법을 정리하여 WordPress 게시글 형식으로 제공합니다. 문제 상황 H2 데이터베이스를 메모리 모드로 설정한 상태에서 generateJooq을 실행하면 테이블이 생성되지 않아 jOOQ 코드가 만들어지지 않는 문제가 발생할 수 있습니다.이는 H2의 메모리 특성상 더 읽기