본문 바로가기
혼자 공부하는 것들/Spring

[Spring Boot] mybatis update, delete 무한대기

by applepick 2022. 2. 21.
반응형

spring boot에서 mybatis를 사용하고 있습니다. 다른 환경에서 똑같은 디비 저장소(도커 컨테이너)를 사용하고 있는데, 다른 환경에서 트랜잭션이 걸려있을 경우 mybatis는 트랜잭션이 완료될 때까지 무한 대기상태가 됩니다. ㅠㅠ 

트랜잭션 플로우

테스트를 하기 위해 더미 유저를 만들어서 실험해보았습니다.

pk값이 701인 유저 정보가 있습니다.

delete 직후 아직 DB에 반영되지 않았습니다. commit을 하지 않았을 경우 spring boot에서 해당 로직을 사용한다면

결괏값이 반환되지 않고 무한 대기상태로 계속 있게 됩니다.

다른 환경에서 commit을 하여 디비에 반영하게 된 뒤에 로직이 정상적으로 실행되게 됩니다.  만약 쿼리에서 로직이 넘어가지 않는다면, 다른 환경에서 트랜잭션이 걸려있을 수 있으니 확인해 보면 될 것 같습니다. 추가적으로 쿼리의 timelimit를 설정하여 지정한 타임아웃 시간이 초과되면, reject 나도록 하면 될 것 같습니다. 감사합니다. 

반응형

댓글