UCP/RMA: Support failover for offloaded GET bcopy protocol - #11840
UCP/RMA: Support failover for offloaded GET bcopy protocol#11840evgeny-leksikov wants to merge 2 commits into
Conversation
|
🤖 Starting review — findings will be posted here when done. |
|
No blocking issues found. The refactor of ucp_proto_request_restart_or_complete is clean and the zcopy path is preserved bit-for-bit. Residual coverage note: the new large AM variants rely on RNDV never being selected under failover (asserted in the AM callback); this holds only because RNDV protocols lack UCP_PROTO_COMMON_INIT_FLAG_FAILOVER, which is the intended design. |
|
🤖 Starting review — findings will be posted here when done. |
|
|
|
🤖 CI Triage Agent — TL;DR: The build failed on a single unrelated gtest case, Full analysisSummary: Root cause: Not the PR.
Log wraparound is ruled out (default Caveat: the Azure log only retains the tail (~500 lines), so the exact Implicated commit: unknown for this failure (PR commit ef2e82d — UCT get failover — does not touch File: Suggested fix:
Related: PR #11840 (this build); prior profiling-test/format change |
ef2e82d to
c72fb43
Compare
|
🤖 Starting review — findings will be posted here when done. |
|
The new small GET variant (SMALL_MSG_SIZE = 1) relies on staying below cap.get.min_zcopy to force bcopy selection, but no assertion verifies get/bcopy was actually chosen — on a transport with a very small min_zcopy/threshold config the intended bcopy-restart coverage could silently be lost. (Already raised in the previous review; remains valid.)
The AM large/RNDV path relies on RNDV never being selected under failover, which was already noted in a prior review. |
c72fb43 to
e4c14aa
Compare
|
🤖 Starting review — findings will be posted here when done. |
|
🤖 Review complete — no issues found. |
|
🤖 CI Triage Agent — TL;DR: The Coverity Full analysisSummary: Azure job "Coverity coverity devel on coverity_rh7" (build 133040) failed at Root cause: In the new helper added by this PR, Implicated commit: File: Suggested fix: Replace the fatal-assert-only guard with an explicit early return, so the null path is visibly unreachable to Coverity: select_elem = ucp_proto_select_lookup_slow(
worker, proto_select, 0,
sender().ep(0, INJECTED_EP_INDEX)->cfg_index, rkey_cfg_index,
&select_param);
if (select_elem == nullptr) {
ADD_FAILURE() << ucp_operation_names[op_id]
<< ": protocol selection is not initialized";
return;
}This is exactly the idiom already used at Related: none found (searched the project for prior reports of this Coverity signature). Prior commits on the same file for context:
|
Small GET operations below the IB cap.get.min_zcopy bound had no failover-capable protocol, so ucp_get failed to start in FAILOVER error handling mode. GET is idempotent, so a failed bcopy request can be restarted on another lane and replayed from the beginning. Cover small, medium and large GET message sizes in the fault tolerance test, and verify that the operations under test have no message size range without a protocol.
e4c14aa to
200cfbd
Compare
|
🤖 Starting review — findings will be posted here when done. |
|
🤖 Review complete — no issues found. |
|
🤖 Starting review — findings will be posted here when done. |
|
🤖 Review complete — no issues found. |
What?
Support failover for offloaded GET bcopy protocol
Why?
Small GET operations below the IB cap.get.min_zcopy bound had no failover-capable protocol, so ucp_get failed to start in FAILOVER error handling mode.
How?
GET is idempotent, so a failed bcopy request can be restarted on another lane and replayed from the beginning.