반응형
spring boot에서 mybatis를 사용하고 있습니다. 다른 환경에서 똑같은 디비 저장소(도커 컨테이너)를 사용하고 있는데, 다른 환경에서 트랜잭션이 걸려있을 경우 mybatis는 트랜잭션이 완료될 때까지 무한 대기상태가 됩니다. ㅠㅠ
테스트를 하기 위해 더미 유저를 만들어서 실험해보았습니다.
pk값이 701인 유저 정보가 있습니다.
delete 직후 아직 DB에 반영되지 않았습니다. commit을 하지 않았을 경우 spring boot에서 해당 로직을 사용한다면
결괏값이 반환되지 않고 무한 대기상태로 계속 있게 됩니다.
다른 환경에서 commit을 하여 디비에 반영하게 된 뒤에 로직이 정상적으로 실행되게 됩니다. 만약 쿼리에서 로직이 넘어가지 않는다면, 다른 환경에서 트랜잭션이 걸려있을 수 있으니 확인해 보면 될 것 같습니다. 추가적으로 쿼리의 timelimit를 설정하여 지정한 타임아웃 시간이 초과되면, reject 나도록 하면 될 것 같습니다. 감사합니다.
반응형
'혼자 공부하는 것들 > Spring' 카테고리의 다른 글
Spring에서 동시성 문제를 해결해보자! [+ThreadLocal] (1) | 2022.04.19 |
---|---|
Spring Boot에서 타임리프 이미지 동적 리소스 사용하기 (0) | 2022.02.23 |
[Spring Boot] 테스트 커버리지 툴 도입(JaCoCo) (0) | 2022.02.17 |
Spring Boot 이미지업로드 (환경: gradle, java11,Spring Boot 2.6.2, thymeleaf) (0) | 2022.02.14 |
Spring 빈 스코프를 알아보자♻️ (1) | 2022.01.31 |
댓글