spring 트랜잭션 오류 및 중복 호출되는 이슈 문의
-
게시물 수정 , 삭제는 로그인 필요
controller
{
1) 접속정보로깅
2) 서비스 호출
3) return
}
service{
1)a dao 호출
2)b dao 호출
3)c dao 호출
4) return
}
간단한 처리인데요.
특정 페이지에 접속하면 controller의 특정 메소드 찾아가서 위의 3가지를 처리하고 나옵니다.
서비스에서는 a , b , c 를 마이마티스로 조회하여 리턴해주고 있습니다.
간헐적으로 서버 로그에 트랜잭션 타임아웃이 나와서 로그를 확인해보니
4시에 controller 젒속
4시0분1초에 a dao 호출
4시0분1초에 b dao 호출
4시0분1초에 c dao 호출
4시10분1초에 cdao 호출
4시10분2초에 트랜잭션 오류로그 jta사용중
(JTA transaction unexpectedly rolled back (maybe due to a timeout); nested exception is javax.transaction.RollbackException)
이렇게 로그가 찍힙니다.
간헐적으로 발생하는 이슈로그가 동일한 형태입니다.
4시에 마지막 접속을 하고
4시 1분에 cdao까지 잘 조회하여 리턴이 끝났는데
다시 새로운 컨트롤러에 진입로그가 없는 상태에서
10분정도 후 cdao호출이 다시 되었다는 로그가 찍히고
그리고 바로 0.1초정도 후에 트랜잭션 오류 로그가 발생합니다.
실제로 고객은 마지막 접속이 4시였기 때문에 저 로그를 만나지 않았을수도 있을 것 같은데요
왜 몇분후에 저 서비스의 dao가 다시 호출이되고 트랜잭션 오류가 나는지 모르겠습니다.
중복호출이 되더라도 그러면 컨트롤러 부터 진입이되야 할거 같고,
혹시라도 서비스가 호출되었다면
a,b는 왜 호출된 로그가 안남는지 이해가 안되네요.
이렇게 발생할만한 케이스가 있을까요?
도움 부탁드립니다.
감사합니다!
#spring 트랜잭션 #spring 트랜잭션 분리 #spring 트랜잭션 전파 #spring 트랜잭션 롤백 #spring 트랜잭션 설정 #spring 트랜잭션 관리 #spring 트랜잭션 커밋 #spring 트랜잭션 예제 #spring 트랜잭션 동기화 #spring 트랜잭션 로그