네임드락 부모에(facade) 트랜잭션이 없을때
169
작성한 질문수 28
자식 service 메서드에 Propagation.REQUIRES_NEW속성은 그럼 필요 없는건가요?
public class NamedLockStockFacade {
private final LockRepository lockRepository;
private final StockService stockService;
public void decrease(Long id, Long quantity) {
try {
lockRepository.getLock(id.toString());
stockService.decrease(id, quantity);
} finally {
lockRepository.releaseLock(id.toString());
}
}
}
-----------
@Transactional
public void decrease(Long id, Long quantity) {
Stock stock = stockRepository.findById(id).orElseThrow();
stock.decrease(quantity);
stockRepository.saveAndFlush(stock);
}
이렇게 자식에만 트랜잭션이 걸려있으면, 커밋이 다되고 lock 풀리는거아니에요? 굳이 부모에 트랜잭션 붙이고 자식트랜잭션에서 NEW하는 이유가 있나요?
답변 1
0
donkey 님 안녕하세요 namedlock 의 특성상 같은 세션 안에서만 동일한 키에 대한 락을 획득과 해제를 할 수 있습니다.
같은세션이란 Application Layer 의 세션이 아닌 mysql session 입니다.
따라서, 트랜잭셔널을 사용하여 같은 세션을 사용토록 하기위함입니다.
감사합니다.
레디선 테스트코드에서 채널이름은 없어도 되는건가요?
0
40
2
낙관적 락을 사용할 떄 차이점
0
118
2
동시성 검증 코드에 관한 문의
0
91
2
단일연산
0
69
2
낙관적락vs. 레디스락
0
106
2
안녕하세요. 레디슨 질문있습니다..!!
0
66
2
@Lock(OPTIMISTIC)이 필요한 이유
0
89
2
get_lock 의 timeout이 3000초 이던데 너무 긴거 아닌가요?
0
128
2
DataSource Hikari 사용 이유
0
145
2
saveAndFlush 사용 이유 문의
0
111
3
비관적 락 VS 네임드 락
0
158
3
application.yaml 에 redis 정보
0
99
2
왜 클래스 이름에 Facade 가 붙나요?
0
181
2
@Transactional 으로 인한 동시성 문제 발생 원인이 궁금합니다.
0
218
2
@modifying 이용한 동시성 제어
0
168
2
DB락과 분산락
0
260
2
NamedLock 테스트 실패
0
186
2
테스트에서 트랜잭션 어노테이션 질문 있습니다.
0
171
2
optimistic Lock 재시도 질문입니다.
0
229
2
낙관적 락 테스트 실패
0
239
2
오류?
0
1624
4
LettureLockStockFacadeTest에서 오류가 발생합니다.
1
267
2
Pessimistic Lock 전체 테스트 오류 문의
0
357
3
비관적 락 vs 레디스(Lettuce)락 비교 관련 질문
0
458
2





