본문 바로가기

Career

[개발일기] 트랜잭션 오류 트러블슈팅

반응형

교훈 : 트랜잭션 단위로 서비스를 설계하자. 애그리거트 루트를 잘 설계하자. mysql 하나의 커넥션 내에서는 중첩 트랜직션이 안된다.

 

게시물 등록 시 오류가 발생해도 등록 처리되어 오류 수정 후 등록시 게시글이 다건 등록되는 오류가 접수되었다.

(내가 해당 기능 개발자는 아니다.)

 

해당 오류가 발생한 원인은 트랜잭셔널한 서비스 클래스의 최상위 메소드의 다른 메소드에서  커넥션을 인자로 받아 커밋하도록 만든 개발자의 실수였다.

원인은 단순했지만 디버깅하면서 재밌는 내용을 찾아 아래에 링크로 남겨둔다.

 

MySQL :: MySQL 5.7 Reference Manual :: 13.3.3 Statements That Cause an Implicit Commit

 

MySQL :: MySQL 5.7 Reference Manual :: 13.3.3 Statements That Cause an Implicit Commit

13.3.3 Statements That Cause an Implicit Commit The statements listed in this section (and any synonyms for them) implicitly end any transaction active in the current session, as if you had done a COMMIT before executing the statement. Most of these state

dev.mysql.com

 

Transactions cannot be nested. This is a consequence of the implicit commit performed for any current transaction when you issue a START TRANSACTION statement or one of its synonyms.
 
반응형