[Bugfix][KV Offload] Ignore stale async lookup results - #54872
Conversation
Co-authored-by: OpenAI Codex <noreply@openai.com> Signed-off-by: Alex <jihui.huang@daocloud.io>
Co-authored-by: OpenAI Codex <noreply@openai.com> Signed-off-by: Alex <jihui.huang@daocloud.io>
213cc1a to
a23d6a2
Compare
|
@orozery this is ready and hope you can take a look |
|
The generation approach looks right to me. One thing I could not settle by reading, so posing it as a question rather than It sets
I haven't been able to prove step 4 can actually be reached after step 3 — it |
|
/ci run |
|
✅ @Alex-ai-future, CI is now available for this PR.
|
|
✅ Triggered Buildkite CI #86833 for commit |
|
/ci retry |
|
✅ Queued 1 failed job(s) for retry in Buildkite CI #86833. |
…54872) Signed-off-by: Alex <jihui.huang@daocloud.io> Co-authored-by: OpenAI Codex <noreply@openai.com>
…54872) Signed-off-by: Alex <jihui.huang@daocloud.io> Co-authored-by: OpenAI Codex <noreply@openai.com>
Purpose
Ignore stale secondary-tier lookup results after request cleanup.
User case
K.still running; cleanup removes A's state.
Kand starts a new lookup.K.B can then use a stale verdict or hit the duplicate-result assertion when
its own result arrives.
The fix adds a generation to each lookup state and ignores results from older
generations. Active requests sharing one pending lookup are unchanged.
This is distinct from #49176/#49328, which fixes failed-load verdict
invalidation. No open issue or PR was found for this request-cleanup race.
Test Plan
The regression test covers cleanup and key reuse, stale/current generation
result delivery, shared entries, and same-generation duplicate results.
Test Result
Model evaluation is not applicable; this is a scheduler lifecycle fix.
AI assistance was used for code and test development. The human submitter
must review every changed line before submission.
Checklist