-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: 분산락 동시성 문제 해결 #107
fix: 분산락 동시성 문제 해결 #107
Conversation
import org.springframework.stereotype.Component; | ||
|
||
@Order(Ordered.HIGHEST_PRECEDENCE) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
명시적으로 락을 반환하려고 TransactionSynchronization
을 활용하려고 했는데 순서가 보장되는 것 같아 @Order
어노테이션만 추가했습니다...!
joinPoint.proceed()
전후에 afterCompletion
을 구현해봤는데 다음 문제들이 발생했습니다.
- 전 : 시작된 트랜잭션이 없어서 에러 발생
- 후 : 이미
joinPoint.proceed()
에서 트랜잭션이 끝났기 때문에afterCompletion
내부의 락 반환 로직을 타지 않음
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
고생했숩니당
Issue Number
close: #
작업 개요
하루에 여러 번 미션 인증 방지 (#96)
+) MissionJoinEvent 수정
작업 사항
트랜잭션 시작 - 분산락 획득 - 분산락 반환 - 트랜잭션 커밋
순서로 이루어졌습니다.@Order
를 통해분산락 획득 - 트랜잭션 시작 - 트랜잭션 커밋 - 분산락 반환
이 이루어지도록 만들었습니다.고민한 점들(필수 X)
분산락을 위한 트랜잭션을 하나 더 만들까 했다가 지금도 미션 인증할 때 시간이 많이 소요되어서 (뺑글이 많이 돌아감) 지양하는 것이 좋다고 판단했습니다....!
스크린샷(필수 X)
여기에 작성하세요