Revert check for HCA reachability like rc_mlx5 (#11781) - master - #11838
ofirfarjun7 wants to merge 1 commit into
Conversation
|
🤖 Starting review — findings will be posted here when done. |
| .ep_invalidate = (uct_ep_invalidate_func_t)ucs_empty_function_return_unsupported, | ||
| .ep_connect_to_ep_v2 = uct_rc_gdaki_ep_connect_to_ep_v2, | ||
| .iface_is_reachable_v2 = uct_ib_iface_is_reachable_v2, | ||
| .iface_is_reachable_v2 = (uct_iface_is_reachable_v2_func_t)ucs_empty_function_return_one_int, |
There was a problem hiding this comment.
why not keep uct_ib_iface_is_reachable_v2 here? gdaki packs a real IB device address and its ep_connect_to_ep_v2 builds the AH from that address via uct_ib_iface_fill_ah_attr_from_addr. With the stub (always return 1), gdaki reports itself reachable to any peer, including a different link layer (IB vs RoCE), a different subnet without FLID, or a mismatched pkey — cases the real check would reject. Since rc_gda participates in UCP wireup (in the ib alias, used as "rc,rc_gda"), UCP could select the gdaki lane toward a genuinely unreachable peer. ep_is_connected still does real device matching and gdaki is normally paired with a primary rc lane that does its own reachability check, so this may be acceptable by design — but pls explain in the description why bypassing reachability is safe for wireup lane selection.
| @@ -98,4 +98,3 @@ UCS_TEST_P(test_uct_iface, is_reachable) | |||
| } | |||
|
|
|||
| UCT_INSTANTIATE_TEST_CASE(test_uct_iface) | |||
There was a problem hiding this comment.
Dropping _UCT_INSTANTIATE_TEST_CASE(test_uct_iface, rc_gda) removes the only reachability coverage for gdaki. The corrupted-address branch cannot pass once the stub is used, but the positive branch (EXPECT_TRUE(is_reachable)) is still valid and worth keeping. Consider keeping a reduced gdaki-specific test that only checks the always-reachable contract, so the behavior is asserted rather than silently untested.
|
The PR description is not shown; per repository review guidance the "Why?" for switching to always-reachable and for deleting the test should be spelled out in the description.
|
|
🤖 CI Triage Agent — TL;DR: The "commit title" codestyle job failed because the PR's commit subject is Full analysisSummary: Azure job Root cause: Secondary (cosmetic) CI issue visible in the same log: the step body in Implicated commit: [REDACTED:Hex High Entropy String] (the PR head commit itself; its title is malformed). The checker logic is from File: buildlib/tools/codestyle.sh:14 (regex check), reported from buildlib/pr/codestyle.yml:17-30 Suggested fix:
Related: PR #11838 (the failing PR); PR #11781 (the commit being reverted); checker introduced/last modified in #11527.
|
fcc7bc4 to
db2467f
Compare
|
🤖 Starting review — findings will be posted here when done. |
| .ep_invalidate = (uct_ep_invalidate_func_t)ucs_empty_function_return_unsupported, | ||
| .ep_connect_to_ep_v2 = uct_rc_gdaki_ep_connect_to_ep_v2, | ||
| .iface_is_reachable_v2 = uct_ib_iface_is_reachable_v2, | ||
| .iface_is_reachable_v2 = (uct_iface_is_reachable_v2_func_t)ucs_empty_function_return_one_int, |
There was a problem hiding this comment.
Making reachability unconditionally return 1 skips valid peer filtering during wireup. The change replaces uct_ib_iface_is_reachable_v2 with ucs_empty_function_return_one_int, so uct_iface_is_reachable_v2() for the gda transport now always reports "reachable". The gda device address is still a standard IB address (iface_get_device_address = uct_ib_iface_get_device_address), so the base IB check works correctly here and every other IB mlx5 transport (rc_mlx5, dc_mlx5, ud_mlx5, gga_mlx5) still uses it. ucp_wireup_select_transport() / ucp_wireup_is_reachable() rely on this to filter out peers with a mismatched pkey, a different IB subnet, or an incompatible/unroutable RoCE address. Unconditionally returning reachable means a gda lane can now be selected toward a peer that the base check would reject, which can defer the failure to connect/QP-transition time instead of lane selection. This warrants an explanation of the "Why?" plus confirmation this is intentional and safe rather than papering over a symptom.
Suggested inline comment: gda device address is a normal IB address and every other IB mlx5 TL keeps uct_ib_iface_is_reachable_v2. why disable the reachability check entirely instead of keeping it? unconditionally returning reachable lets wireup pick a gda lane toward a peer with mismatched pkey / different subnet / unroutable RoCE, moving the failure to connect time.
|
Test removal is a direct consequence, not independently justified. Removing Suggested inline comment: this removal is only needed because the stub now always returns reachable, so the corrupted-address loop can never see Residual coverage gap: no test verifies that gda still rejects genuinely unreachable peers (mismatched pkey/subnet/RoCE); if the always-reachable behavior is intentional, that gap is acceptable, otherwise it should be covered. |
What?
Revert #11801
Why?
Reachability check of ib can be wrong for gda