개요
API를 통해 오라클 DB에 데이터를 INSERT하려고 했는데 다음과 같은 에러가 발생했다.
o.h.e.jdbc.spi.SqlExceptionHelper [WARN ] : SQL Error: 17002, SQLState: 08006
o.h.e.jdbc.spi.SqlExceptionHelper [ERROR] : IO 오류: Socket read interrupted
o.s.orm.jpa.JpaTransactionManager [DEBUG] : Participating transaction failed - marking existing transaction as rollback-only
o.s.orm.jpa.JpaTransactionManager [DEBUG] : Setting JPA transaction on EntityManager [SessionImpl(324936011<open>)] rollback-only
o.s.orm.jpa.JpaTransactionManager [DEBUG] : Initiating transaction rollback
o.s.orm.jpa.JpaTransactionManager [DEBUG] : Rolling back JPA transaction on EntityManager [SessionImpl(324936011<open>)]
덤으로 504과 함께 타임아웃도 발생했다.
해결
DB 락 때문에 발생했다. DataGrip에서 중복 데이터를 지웠는데 커밋이 안 돼서 락이 물려있었다. 커밋을 해주니 정상적으로 응답이 왔다.
예전에도 DataGrip과 같은 DB 클라이언트 툴을 사용하면서 비슷한 문제를 겪은 적이 있는데, 이번에도 비슷한 삽질을 했다.
다행히 팀원분의 도움으로 해결..