inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

재고시스템으로 알아보는 동시성이슈 해결방법

Pessimistic Lock 활용해보기

Lock 해제 시점이 궁금합니다.

320

BH Kang

작성한 질문수 1

0

안녕하세요!

Lock을 해제하는 시점이 궁금합니다.

아래 단계에서 어느 시점 이전 혹은 이후 인지 알려주시면 감사드리겠습니다.

 

1) 트랜잭션 시작

2) Lock 획득 후 비즈니스 로직 실행

3) 트랜잭션 커밋

 

(혹시, 3번 이전에 Lock을 해제할 경우 이전과 동일한 동시성 문제가 발생할 것 같은데.. 우선 답변부탁드립니다!)

 

java spring 동시성

답변 2

0

최상용

BH Kang 님 안녕하세요.

말씀하신대로 레이스컨디션을 해결하기 위해서는 트랜잭션 커밋후에 락을 해제하여야합니다.
감사합니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

Lock을 해제하는 시점은 일반적으로 트랜잭션이 완료되고 커밋되는 시점, 즉 3) 트랜잭션 커밋 이후에 이루어집니다. 따라서, 비즈니스 로직이 모두 실행된 후 데이터의 일관성을 유지하기 위해 트랜잭션이 성공적으로 끝날 때까지 Lock을 유지합니다. 이는 동시에 발생할 수 있는 다른 트랜잭션들이 해당 데이터에 접근하는 것을 방지하고, 데이터의 안정성과 일관성을 보장하기 위함입니다.

트랜잭션이 커밋되기 이전에 Lock을 해제하는 경우, 커밋되기 전의 데이터가 다른 트랜잭션에 의해 수정될 수 있어 동일한 동시성 문제가 발생할 수 있습니다. 따라서, Lock은 트랜잭션이 완전히 완료되고 커밋된 이후에 해제되어야 안전합니다.

레디선 테스트코드에서 채널이름은 없어도 되는건가요?

0

41

2

낙관적 락을 사용할 떄 차이점

0

118

2

동시성 검증 코드에 관한 문의

0

92

2

단일연산

0

69

2

낙관적락vs. 레디스락

0

106

2

안녕하세요. 레디슨 질문있습니다..!!

0

66

2

@Lock(OPTIMISTIC)이 필요한 이유

0

89

2

get_lock 의 timeout이 3000초 이던데 너무 긴거 아닌가요?

0

129

2

DataSource Hikari 사용 이유

0

145

2

saveAndFlush 사용 이유 문의

0

112

3

비관적 락 VS 네임드 락

0

159

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

1626

4

LettureLockStockFacadeTest에서 오류가 발생합니다.

1

268

2

Pessimistic Lock 전체 테스트 오류 문의

0

359

3

비관적 락 vs 레디스(Lettuce)락 비교 관련 질문

0

459

2