작성
·
337
0
NamedLockFacade에서
@Transactional
public void decrease(Long id, Long quantity) {
try {
lockRepository.getLock(id.toString());
stockService.decrease(id, quantity);
} finally {
lockRepository.releaseLock(id.toString());
}
}
락 획득을 하지 못해도 releaseLock이 실행되서 락을 해제하는 코드입니다.
락을 획득하지 못해도 락을 해제하려고 하는데 따로 문제가 발생하진 않나요?
답변 1
0
https://dev.mysql.com/doc/refman/8.0/en/locking-functions.html#function_release-lock
공식문서에서 release_lock 부분을 살펴보시면 자세한 내용을 아실 수 있습니다!
요약해서 전달을 드리면
락은 존재하지만 해당 스레드에서 얻은 락이 아닐경우 0 을 반환합니다.
락이 존재하지 않는다면 null 을 반환합니다.
감사합니다!
락을 획득하지 못한 상태에서 락을 해제하는 코드가 실행될 때 어떻게 작동되는지 궁금해서 질문 드렸습니다!