[https://nvbugs/6104831][fix] disagg KV transfer timeout observation#14740
[https://nvbugs/6104831][fix] disagg KV transfer timeout observation#14740chienchunhung wants to merge 2 commits into
Conversation
|
/bot run --disable-fail-fast |
|
PR_Github #51014 [ run ] triggered by Bot. Commit: |
|
PR_Github #51014 [ run ] completed with state
|
… and recv idempotency Signed-off-by: Chien-Chun Hung <2679986+chienchunhung@users.noreply.github.com>
7d7e35f to
3e7f01e
Compare
|
/bot run --disable-fail-fast |
|
PR_Github #51072 [ run ] triggered by Bot. Commit: |
|
PR_Github #51072 [ run ] completed with state
|
Signed-off-by: Chien-Chun Hung <2679986+chienchunhung@users.noreply.github.com>
|
/bot run --disable-fail-fast |
|
PR_Github #51146 [ run ] triggered by Bot. Commit: |
|
PR_Github #51146 [ run ] completed with state
|
Summary
Carves out the observe-only KV-transfer deadline diagnostics from PR #13713 into a smaller, mergeable change. No in-flight cancellation logic; no action is taken on timeout — the WARN is strictly diagnostic.
This PR originally also contained the Python recv-side dedup sets. That portion (A3 in PR #13713's component taxonomy) was reverted in commit
7589b865ffto keep the scope minimal and to test whether the cross-rank divergence observed during PR #13713's CI is sensitive to A3.What this PR changes (all ports from PR #13713)
mTimedOutSenderIds/mTimedOutRequesterIdsdedup sets so the timeout WARN fires at most once per stuck requestcacheTransceiver.hsetKvCacheTransferStart(now())at the entry ofrequestAndReceiveAsyncso the deadline observation sees a valid elapsed time even before the worker thread has stamped itcacheTransceiver.cppcheckContextTransferStatusandcheckGenTransferStatus. Emitted when the configuredkv_transfer_timeout_msis exceeded. No state transition, no eviction, no cancellation triggered. Dedup'd via A4.cacheTransceiver.cppIssue these resolve independent of in-flight cancellation
Today a wedged disagg KV transfer (peer crash, network partition, slow disk) is silent — the request blocks indefinitely with no operator-visible signal identifying which request is stuck or for how long. This PR gives operators a triage anchor.
kv_transfer_timeout_ms.What this PR explicitly excludes
_disagg_gen_init_prepared_ids/_disagg_gen_kv_recv_started_ids). Reverted in commit7589b865ffbecause they exist primarily to make recv idempotent under the cancel-throw retry pattern, which is not in scope here. Without that pattern, the scheduler's state-based filter is sufficient.cancel_request,sendHolder.poison(),mInFlightCancelFlags, deferred-cleanup paths, fail-closed checks, promise idempotency, etc.).setState/receiveAsync/emplaceinrequestAndReceiveAsync. Upstream ordering preserved.