redisson lock 설정하고 조회할 때 에러 /java.lang.IllegalMonitorStateException: attempt to unlock lock, not locked by current thread by node id: ~~~
하기 코드를 실행했을때 에러 발생함. 먼저 IllegalMonitorStateException은 synchronized 블록이나 Lock객체를 잠금, 해제할 때 문제가 발생한 것을 나타낸다고 한다. 나는 지금 redisson을 이용한 pub-sub 기반의 lock을 사용하고 있으니, 위 코드에서 문제가 있다고 확신함. 생각해보니 finally 블록에서 무조건 unlock을 호출하고 있었음. 여기가 문제인 것 같아 lock 객체가 제대로 생성이 되었을때만 unlock이 되도록 수정해 보았음. 위처럼 수정하니 정상 실행 되었음.
Learned!
2023. 2. 27. 13:41
어떤 lock을 사용할까 - redisson / pessimistic lock
토이 프로젝트를 진행하던 중, 동시성 이슈를 해결해야 할 필요가 생겼습니다. 이 내용을 문서화 할 필요도 있어 해당 내용을 정리한 내용을 블로그에다가도 옮겨 보았습니다. Objective 현재 우리 서비스에서는 하나의 책에 2개 이상의 스레드가 접근해 주문을 시도하면 데이터의 정합성이 깨지는 문제가 있음. 우리 서비스와 같은 다중 사용자 환경에서 둘 이상의 트랜잭션이 동시에 수행될 때, 데이터의 정합성을 해치지 않도록 트랜잭션의 데이터 접근을 제어할 필요가 있음. 이러한 동시성 이슈를 해결하기 위해 lock을 이용한 동시성 제어를 사용하고자 함. Proposal redisson 사용 redis의 pub-sub 기반 message broker 기능을 이용하여 락을 구현하는 방법이다. 락을 해제하는 측이 락..
spring
2023. 2. 23. 22:22
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- jmeter세션
- 인덱스
- 부하테스트시나리오
- jmeter토큰
- jmeter시나리오
- 토큰
- CheckedException
- bankersRounding
- hackerrank
- jmeter쿠키
- jmeter로그인
- Lock
- 프로그래머스
- 자바
- EC2
- index
- Spring
- jmeter테스트
- CorrectnessAndTheLoopInvariant
- pessimisticlock
- jwt
- 대규모더미데이터
- Java
- 동적크롤링
- Python
- 항해
- jmeter부하테스트
- Redisson
- 스프링faker
- Redis
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함