phantom read2 (Spring/JPA/Transaction) 쓰기 스큐, 팬텀. Write skew, Phantom (하) (Spring/JPA/Transaction) 쓰기 스큐, 팬텀. Write skew, Phantom https://lion-king.tistory.com/70 { try { service.count(token); // 테스트 될 메소드 } catch(Exception e) { e.printStackTrace(); } latch.countDown(); }); } latch.await(); AccessCount countRes = accessCountRepository .findByToken(token); assertNotNull(countRes); int resCount = countRes.getAccessCnt(); assertEquals(numberOfThreads, resCount); } 다중 쓰레드.. 2020. 7. 7. (Spring/JPA/Transaction) 쓰기 스큐, 팬텀. Write skew, Phantom (Spring/JPA/Transaction) 쓰기 스큐, 팬텀. Write skew, Phantom "객체관계형 매핑 프레임워크를 사용하면 뜻하지않게 데이터베이스가 제공하는 원자적 연산을 사용하는 대신 불안전한 read-modify-write 주기를 실행하는 코드를 작성하기 쉽다." 오류 로그를 보던 중 동시에 같은 파라메터로 온 request들을 처리하다가 발생한 오류를 보았습니다. Duplicate entry for unique key 오류가 발생한 api는 특정업체 상품에 접근한 횟수를 카운트하는 기능을 하였고, 업체마다 토큰을 지정하여 해당 토큰이 파라메터로 들어오는 구조였습니다. 업무시간 외에 여러 방법으로 테스트한 기록을 작성합니다. 예시코드: @Transactional public void .. 2020. 7. 3. 이전 1 다음