낙관/비관 락 등 아무런 조치를 취하지 않았을때, 트랜잭션 동시성 문제가 발생하는것을 확인하기 위한 jemter 테스트
변경 사항
작성한 부하테스트
배경
동일한 엔티티에 대해 여러 수정 요청이 발생한다면, 실제로 문제가 발생하는지 확인하기 위해 테스트를 작성하였고 다음과 같은 결과를 얻었다.
데드락이 발생.
2024-06-10T09:29:57.591+09:00 WARN 223492 --- [reservation] [tLoopGroup-1-11] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1213, SQLState: 40001
...
2024-06-10T09:29:57.591+09:00 ERROR 223492 --- [reservation] [ntLoopGroup-1-8] o.h.engine.jdbc.spi.SqlExceptionHelper : Deadlock found when trying to get lock; try restarting transaction
...
2024-06-10T09:29:58.501+09:00 ERROR 223492 --- [reservation] [tLoopGroup-1-14] c.s.r.n.http.handler.ExceptionHandler : Exception, could not execute statement [Deadlock found when trying to get lock; try restarting transaction] [update reservable_item set business_id=?,is_available=?,last_modified_time=?,max_quantity_per_user=?,name=?,price=?,quantity=?,reservable_time=? where item_id=?]; SQL [update reservable_item set business_id=?,is_available=?,last_modified_time=?,max_quantity_per_user=?,name=?,price=?,quantity=?,reservable_time=? where item_id=?]
테스트 결과
아이템은 초기에 50개가 있었고 50개가 소비되었지만, 유저는 수량을 초과하여 82개를 구매하였다.
PR 설명
낙관/비관 락 등 아무런 조치를 취하지 않았을때, 트랜잭션 동시성 문제가 발생하는것을 확인하기 위한 jemter 테스트
변경 사항
배경
동일한 엔티티에 대해 여러 수정 요청이 발생한다면, 실제로 문제가 발생하는지 확인하기 위해 테스트를 작성하였고 다음과 같은 결과를 얻었다.
데드락이 발생.
테스트 결과 아이템은 초기에 50개가 있었고 50개가 소비되었지만, 유저는 수량을 초과하여 82개를 구매하였다.
실행 전
실행 후
jmeter 테스트 결과
관련 이슈
10
추가 정보