네임드락 부모에(facade) 트랜잭션이 없을때
180
작성한 질문수 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
92
2
낙관적 락을 사용할 떄 차이점
0
177
2
동시성 검증 코드에 관한 문의
0
128
2
단일연산
0
107
2
낙관적락vs. 레디스락
0
144
2
안녕하세요. 레디슨 질문있습니다..!!
0
106
2
@Lock(OPTIMISTIC)이 필요한 이유
0
131
2
get_lock 의 timeout이 3000초 이던데 너무 긴거 아닌가요?
0
156
2
DataSource Hikari 사용 이유
0
190
2
saveAndFlush 사용 이유 문의
0
150
3
비관적 락 VS 네임드 락
0
203
3
application.yaml 에 redis 정보
0
123
2
왜 클래스 이름에 Facade 가 붙나요?
0
208
2
@Transactional 으로 인한 동시성 문제 발생 원인이 궁금합니다.
0
251
2
@modifying 이용한 동시성 제어
0
213
2
DB락과 분산락
0
319
2
NamedLock 테스트 실패
0
216
2
테스트에서 트랜잭션 어노테이션 질문 있습니다.
0
204
2
optimistic Lock 재시도 질문입니다.
0
272
2
낙관적 락 테스트 실패
0
282
2
오류?
0
1686
4
LettureLockStockFacadeTest에서 오류가 발생합니다.
1
305
2
Pessimistic Lock 전체 테스트 오류 문의
0
429
3
비관적 락 vs 레디스(Lettuce)락 비교 관련 질문
0
493
2





