Repository navigation
INTERNAL: Make a lane job from each item event of the engine - #21
Conversation
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
d6fede3 to
c338add
Compare
fc163da to
26ed023
Compare
26ed023 to
31f510c
Compare
14ae5e8 to
3800918
Compare
d2238e3 to
f2743b4
Compare
efc25de to
624cddb
Compare
87ff2f3 to
cec7eb1
Compare
458268f to
746c76b
Compare
cec7eb1 to
02cda13
Compare
02cda13 to
fd0cef8
Compare
4d7a776 to
c2010cf
Compare
8cc9d23 to
be7b816
Compare
|
쓰기 명령 처리 중에 만료나 evict로 |
|
Replication/Persistence, Eviction, Expire에 의해 발생하는 쓰기 작업은 사용자가 직접 vop 명령어를 실행한 경우가 아니므로, 이 경우 이벤트는 Reply와 Waiter를 모두 None으로 설정하여 작업을 전달하며, |
|
@ing-eoking |
|
무슨 말인지 이해했습니다. 현재 그 처리가 없습니다. 아마 이 문제 때문에 원래는 엔진을 호출하기 전에 Task를 미리 만들어 두고, 이벤트에서는 필요한 부분만 채워 넘기는 방식이었던 것 같습니다. 그런데 Job 타입을 제거하면서 이 부분이 불필요하다고 판단해 함께 지워버린 것 같습니다. 이전과 같은 방식으로 다시 구현하면 될 것 같습니다.
|
be7b816 to
ab6e470
Compare
ab6e470 to
fd8371b
Compare
fd8371b to
ab6e470
Compare
ab6e470 to
feecea7
Compare
feecea7 to
9a4b3bf
Compare
9a4b3bf to
0923a6d
Compare
🔗 Related Issue
⌨️ What I did
엔진의 item 이벤트 콜백(
ON_EVENT_ITEM)을 등록하고, element 이벤트가 오면 그 자리에서 Job을 만들어 Pool에 넘깁니다.클라이언트 쓰기뿐 아니라 복제·persistence 재생으로 바뀐 element도 같은 콜백으로 들어옵니다.
그래서 Job을 명령에서 미리 만들지 않고 콜백에서 이벤트를 보고 만듭니다.
이렇게 하면 세 경로가 하나의 코드로 처리됩니다.
흐름
cookie를 NULL로 넘깁니다. 그래서 어느 연결의 쓰기인지는 스레드 로컬로 전달합니다.콜백은 엔진 쓰기 안에서 같은 스레드로 동기 호출되므로 스레드 로컬로 충분합니다.
offer는 클로저 범위 안에서만 연결을 스레드 로컬에 둡니다.패닉이 나도 끝나면 비우기 때문에, execute가 끝난 연결이 남아 다른 이벤트에서 쓰이는 일이 없습니다.