이거땜에 jpa끝내도 끝낸거같지가 않음.
[시작전세팅]
2차캐쉬 on
[1번 쓰레드]
member
id 1
name one
persist
[2번쓰레드 시작 전]
콘솔로 db접속 후
member
id 1
name two
update
[2번쓰레드]
member(id 1)를 find
retrieve 옵션은 bypass
store옵션은 refresh
[3번쓰레드]
member(id1)를 find
retrieve 옵션은 use
store 옵션도 use
각 쓰레드는 모두 순차적으로 실행시켰으며,
2번과 3버스레드에서 name을 print해서 데이터를 확인함
예상시나리오
2번쓰레드는 retrieve bypass옵션에 의해 데이터를 디비에서 직접 가져옴
따라서 2번쓰레드에서 멤버의 네임은 two
그리고 해당 데이터는 store refresh옵션에 의해 2차캐쉬에 저장됨
따라서 3번 쓰레드는 retrieve use에 의해 2차캐시에서 데이터를 가져오는데
two를 가져옴.
실제시나리오
2번쓰레드의 bypass는 잘 작동함. 2차캐쉬의 one 대신, 디비에서 직접 two를 가져옴.
허나 store refresh가 작동안함
3번쓰레드가 2차캐쉬에서 데이터를 가져오는데 여전히 one이 나옴
[시작전세팅]
2차캐쉬 on
[1번 쓰레드]
member
id 1
name one
persist
[2번쓰레드 시작 전]
콘솔로 db접속 후
member
id 1
name two
update
[2번쓰레드]
member(id 1)를 find
retrieve 옵션은 bypass
store옵션은 refresh
[3번쓰레드]
member(id1)를 find
retrieve 옵션은 use
store 옵션도 use
각 쓰레드는 모두 순차적으로 실행시켰으며,
2번과 3버스레드에서 name을 print해서 데이터를 확인함
예상시나리오
2번쓰레드는 retrieve bypass옵션에 의해 데이터를 디비에서 직접 가져옴
따라서 2번쓰레드에서 멤버의 네임은 two
그리고 해당 데이터는 store refresh옵션에 의해 2차캐쉬에 저장됨
따라서 3번 쓰레드는 retrieve use에 의해 2차캐시에서 데이터를 가져오는데
two를 가져옴.
실제시나리오
2번쓰레드의 bypass는 잘 작동함. 2차캐쉬의 one 대신, 디비에서 직접 two를 가져옴.
허나 store refresh가 작동안함
3번쓰레드가 2차캐쉬에서 데이터를 가져오는데 여전히 one이 나옴
댓글 0