diff options
| author | Daniil Cherednik <[email protected]> | 2026-06-24 14:17:12 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-06-24 14:17:12 +0200 |
| commit | 33285fba4c4d5d48b671377a0a2c99e3b568e3dd (patch) | |
| tree | 1e05f8ca86788ff0951251926de214f74ec502cd /contrib/tools/python/src/Python/dynload_win.c | |
| parent | d9d835a0fc89ce514b88eb18ef5cbdce51a1f2b2 (diff) | |
[ICRDMA] Disable graceful reconnect for RDMA sessions NBYDB-2307 (#44297)
Graceful reconnect keeps the same interconnect session instance and asks the peer to continue from the last confirmed packet. That is fine for the TCP/XDC path where replay is based on serialized bytes and the receive context can consume the catch buffer idempotently.
RDMA adds transport state that is not stable across such continuation. A reconnect creates a new RDMA QP on the receiving side, while the peer and replayed XDC stream may still describe RDMA_READ commands, rkeys, and buffer cursors from the previous connection. If a reconnect happens after RDMA sections were parsed or after RDMA_READ scheduling advanced the receive-side cursor, replaying the old bytes can bind the event to a stale or unpaired QP, corrupt the reconstructed event, or leave delivery stuck.
Make RDMA sessions use a full reconnect instead of graceful continuation. Local reconnect now starts an initial handshake when the current session has RDMA state, which replaces the old session and drops its pending RDMA receive/send state. Incoming continuation requests that match an existing RDMA session are rejected and the local RDMA session is terminated so that the peer also falls back to a fresh session.
Add regression coverage for partial XDC/RDMA replay states and for simultaneous RDMA reconnects. The TCP XDC baseline still verifies graceful replay delivery. RDMA variants verify that the old receive session is replaced and no corrupted event is delivered. Disable RDMA in fat unstable-connection tests that assert legacy TCP/XDC unsure-undelivered ordering, because RDMA now intentionally performs a full session break instead of preserving graceful reconnect semantics.
Diffstat (limited to 'contrib/tools/python/src/Python/dynload_win.c')
0 files changed, 0 insertions, 0 deletions
