2019년 8월 27일 화요일

@Retryable

Transaction 처리 중 org.hibernate.exception.LockAcquisitionException 발생 하여 처리 한 내용.


  1. 상황
    • 1개 이상의 Thread 에서 동일한 테이블에 데이터 유무 확인하여 insert 하기 위해 read -> 데이터 유무 체크 -> insert 하는 method 에 Transaction 설정. 이때 'Phantom Read' 발생을 막기 위해 Isolation 은 SERIALIZABLE 로 설정 함.
    • 12 개의 Thread 로 구동 중 JPA 에서 org.hibernate.exception.LockAcquisitionException 발생. 확인 해보니 이미 Lock 이 걸려 있는데 다른 thread 에서 Lock 획득 하려다가 발생한 Exception 으로 확인하고 처리.
  2. 처리
    • 구글링 해보니 retry 하라는 내용이 많은것으로 보아 retry 로 처리 예정. 아직 안해봄. ㅋ
    • Spring-retry 가 처리 방안으로 보임
  3. 참고

댓글 없음:

댓글 쓰기