Skip to content

Commit 8cece8a

Browse files
committed
findings: map upstream #49635/#49809/#49820 + coverage vs defect patches
Defect 3 (HIT_PENDING no-deadline in tiering/manager.py) verified LIVE in main@70009fb9 - upstream added only observability, no pending-wait bound. Signed-off-by: nilig <nili.ifergan@gmail.com>
1 parent 53a85ba commit 8cece8a

1 file changed

Lines changed: 59 additions & 0 deletions

File tree

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Upstream vLLM P2P issues: map + coverage
2+
3+
Maps the three filed upstream issues to the two internal defect catalogs
4+
(`p2p-pd-defects.md`, `p2p-lookup-hangs.md`) and states what remains after
5+
each upstream fix lands. All three issues are OPEN as of 2026-07-25.
6+
7+
## The three issues (distinct bugs, distinct layers)
8+
9+
| issue | what it is | layer / file | crash or stall | catalog | fix PR |
10+
|---|---|---|---|---|---|
11+
| #49635 | late KV-offload store after request finalization -> `KeyError` (`_req_state` deleted at `tiering/manager.py:721`, indexed unguarded at `:542` via `scheduler.py:1045 _build_store_jobs`) | OffloadingConnector store path -- NOT P2P-specific | crash | neither catalog | #49671 (open) |
12+
| #49809 | reconnect to a reaped peer trips `AssertionError: ZmqConnection already exists`; dead conn never released | P2P control transport (`tiering/p2p/control/zmq.py`) | crash | pd-defects Defect 2 | #49823 (open) |
13+
| #49820 | symmetric producer accepts a fetch it cannot serve, never sends `TransferDone(success=False)` -> consumer deferred full `_LOAD_TIMEOUT_S=30s` | P2P session (`tiering/p2p/session/*`) | stall | new (post-Liran residual) | none |
14+
15+
Distinguishing axis: #49635 is OffloadingConnector-general (fires even
16+
aggregated / no P2P); #49809 and #49820 are P2P-tier-specific but different
17+
sub-layers (control transport vs session).
18+
19+
## Coverage: are those three enough?
20+
21+
No. After #49635 (->#49671), #49809 (->#49823), #49820 (->future fix), and
22+
Liran's #48021 all land:
23+
24+
| defect | covered by | patch still needed? |
25+
|---|---|---|
26+
| #49635 finalization crash | #49671 | no |
27+
| #49809 reconnect crash | #49823 | no |
28+
| #49820 symmetric-fetch 30s stall | #49820 fix (TBD) | no, once written |
29+
| lookup-hangs Defect 1 (duplicate-fetch teardown) | Liran's one-fetch contract in #48021 (`dupfetch=0` on a version-matched engine) | no |
30+
| lookup-hangs Defect 2 (pop-on-read MISS livelock) | Liran's `register_lookup` retains resolved HIT+MISS until fetch/finish (no pop-on-read) = the sticky-MISS. VERIFIED in `client.py` @145a460c | no (`defect12` Part 2 redundant) |
31+
| lookup-hangs Defect 3 (`HIT_PENDING` write-in-flight, no deadline in UPSTREAM `tiering/manager.py`) | nothing | YES -- `defect3_fix_pending-wait-deadline.diff`, or file upstream |
32+
33+
Softer gap: `defect12` Part 1 (lookup-phase deadline) is NOT in Liran's branch
34+
-- only `_LOAD_TIMEOUT_S=30` on the fetch phase, no deadline on a stranded
35+
lookup probe. Defense-in-depth: bites only if the one-fetch contract is
36+
violated and a session tears down, stranding a lookup that hangs the full
37+
300s. Latent on a version-matched engine where the contract holds.
38+
39+
## Numbering caveat
40+
41+
Two catalogs both start at "Defect 1", causing collisions:
42+
- `p2p-pd-defects.md`: Defect 1 = cross-TP block identity (upstream
43+
`file_mapper.py`, vllm#48414); Defect 2 = reconnect crash (= #49809).
44+
- `p2p-lookup-hangs.md`: Defect 1 = duplicate-fetch teardown; Defect 2 = MISS
45+
livelock; Defect 3 = `HIT_PENDING` no-deadline.
46+
47+
## Net
48+
49+
Two crashes fixed (#49635, #49809), the 30s stall fixed (#49820), and
50+
lookup-hangs Defect 1+2 covered by #48021. The remaining real bug is
51+
lookup-hangs Defect 3 -- an upstream `tiering/manager.py` hang untouched by any
52+
P2P issue.
53+
54+
VERIFIED 2026-07-25 against `main`@70009fb9: `TieringManager.lookup()` still
55+
returns `LookupResult.HIT_PENDING` bare, with no deadline. Upstream added only
56+
observability around it (`secondary_lookup_start_time`, `sync_lookup_delay`
57+
accumulation) -- no bound, no downgrade-to-MISS. So Defect 3 is LIVE in main;
58+
`defect3_fix_pending-wait-deadline.diff` is still required. Not filed upstream
59+
-> candidate for a companion issue to #49809/#49820.

0 commit comments

Comments
 (0)