• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

Named Lock에서 락 획득 실패 후 락 해제할 때가 궁금합니다.

24.01.02 10:31 작성 조회수 231

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

강민님 안녕하세요.
혹시 어떤부분에서 문제가 발생할거라고 예상하시는지 말씀해주실 수 있으실까요 ?

강민님의 프로필

강민

질문자

2024.01.02

락을 획득하지 못한 상태에서 락을 해제하는 코드가 실행될 때 어떻게 작동되는지 궁금해서 질문 드렸습니다!

https://dev.mysql.com/doc/refman/8.0/en/locking-functions.html#function_release-lock

공식문서에서 release_lock 부분을 살펴보시면 자세한 내용을 아실 수 있습니다!

요약해서 전달을 드리면

  1. 락은 존재하지만 해당 스레드에서 얻은 락이 아닐경우 0 을 반환합니다.

  2. 락이 존재하지 않는다면 null 을 반환합니다.

감사합니다!