트러블 슈팅(7)
-
Spring Batch Transaction Executor Type 오류
최근에 회사에서 Spring-Batch로 개발을 하면서 다음과 같은 오류를 보게되었습니다.org.springframework.dao.TransientDataAccessResourceException: Cannot change the ExecutorType when there is an existing transaction제가 당시에 사용하던 코드는 아래와 같은 모양이었습니다.@Beanpublic MyBatisPagingItemReader mybatisPagingItemReader() { ...}@Beanpublic ItemWriter itemWriter() { return (chunk) -> { modelMapper.insertModelList(chunk.getItems()); ..
2025.01.01 -
Spring boot jar 파일 실행시 profile 적용
기존에 제가 담당하던 시스템을 매우 Legacy한 시스템입니다.최근에 spring boot를 적용하고 생성된 jar 파일을 실행시키는데 profile이 제대로 적용되지 않는 상황이 발생했습니다.여러 자료들을 찾아보니 jar 파일을 실행새키면서 profile을 적용하는 방법은 총 2가지가 있었습니다.Java System Propertiesjava -jar -Dspring.profiles.active={프로파일} 파일위치 java option현 구조에서 주의해야할 사항은 -Dspring.profiles.active 옵션이 파일 위치보다 앞에 있어야 합니다. 만약 그렇지 않다면 실행시 profile을 인식하지 못 합니다.Program Argumentsjava -jar 파일 위치 --spring.profiles..
2024.12.21 -
MySQL select insert Deadlock
최근 업무 중에 시스템에 아래와 같은 에러 로그가 발생한 것을 보았습니다. java.sql.SQLException: Deadlock found when trying to get lock; try restarting transaction Query: update … 에러 로그가 발생한 쿼리는 아래의 예시와 같은 단순한 update 구문이었습니다. UPDATE `TABLE` SET `column1` = `column1` WHERE `column2` = `column2`운영환경에서 사용하는 DB는 MySQL이었고 모든 설정은 default 설정으로 되어 있었습니다. MySQL에서 deadlock 관련 로그를 확인해보니 에러가 발생한 update 구문의 테이블과 동일한 테이블을 사용하는 SELECT INSERT..
2022.10.20 -
Ajp Protocol packetSize 제한 오류
최근 Tomcat과 Apache를 연동하는 도중에 Apache에서 다음과 같은 에러 메시지가 나타났습니다. [Fri May 13 19:09:51 2022] [79415:140343571771968] [error] ajp_connection_tcp_get_message::jk_ajp_common.c (1409): (node2) wrong message size 65536 [Fri May 13 19:09:51 2022] [79415:140343571771968] [error] ajp_get_reply::jk_ajp_common.c (2289): (tomcat) Tomcat is down or network problems. Part of the response has already been sent to t..
2022.05.19 -
Public Key Retrieval is not allowed
MySQL 8.0 이상의 버전의 DB 로 접속하려고 하는데, Public Key Retrieval is not allowed라는 에러가 발생했습니다. MySQL 8.0 미만의 버전에서는 주소값, 데이터베이스, 드라이버이름, 유저아이디, 패스워드 등만 가지고 있으면 DB 접속이 가능했습니다. 하지만 MySQL 8.0 이상의 버전부터는 보안적인 이슈로 useSSL=false와 allowPublicKeyRetrieval=true 설정을 추가해줘야합니다.J JDBC 주소를 예시로 하자면 아래와 같습니다. jdbc:mysql://localhost:3306/database?allowPublicKeyRetrieval=true&useSSL=false
2022.01.22 -
Jquery Click Event Bubbling 방지
간혹 Jquery 클릭 이벤트 실행시 1회가 아니라 여러 번 실행되는 경우가 있습니다. 이런 현상이 나타나는 이유는 사용자가 마우스로 버튼을 클릭했을 때 버튼을 감싸고 있는 부모 태그들도 이 클릭 이벤트에 반응을 하기 때문입니다. 이러한 현상을 Bubble Up이라고 합니다. 이러한 Bubbling을 해결하는 방법은 아래의 방법들이 있습니다. .off() 사용 $(element).off().on('click', function () { // body });.off() 메서드는 이벤트를 바인딩 해제하는 경우에 사용하는게 적절합니다. 그래서 .on() 메서드의 이중 로딩으로 발생하는 중복 실행 오류를 숨길 수는 있어도 좋은 접근법이 아니라고 합니다. .stopPropagation() 사용 $(..
2022.01.14