Repository navigation
Conversation
…lity Resolve UBSHM handshake conflicts using the tested rebased tree. Retain backend-specific format negotiation, remote shared-memory lengths, and upstream IPC V2 tests.
…er-oct15 Resolve current master conflicts and preserve UBSHM IPC V2 negotiation
…ict-oct18 Resolve master conflict and preserve shared memory name safety
…flict-refresh Resolve modular CMake conflict and preserve handshake protobuf generation
Port URMA v2 and v3 negotiation into AdapterTransport while preserving the existing RDMA and UBSHM implementations and regression tests. Include standalone bonding import, ordered SEND work requests, the 4096-byte CTP payload limit, bounded diagnostics, mock regression coverage and concise documentation.
|
Updated in dc983e8.
Validation: URMA 51 tests, fallback 8 tests, common handshake 28 tests, RDMA 92 tests and UBSHM 43 tests passed. URMA and fallback suites passed 100 shuffled repetitions each. TCP-only build passed all 8 fallback tests; Make TCP-only fallback object compilation passed. |
|
Added in 9f4efc6 (tests and documentation only; no production data-path changes).
Validation boundary: the tests run actual old/new handshake code but share the current data path and mock provider. Two independent old/new binaries on real devices have not been tested here. The separately identified CQ callback/resource teardown lifetime risk remains open; these handoff tests do not claim to fix or validate that race. |
Pin the main Socket through a carrier-owned context before endpoint access. Serialize CQ dispatch with teardown and reject callbacks from an earlier reset generation. Add barrier-controlled event/polling and copy/zero-copy regressions for concurrent close, last-reference recycling, and stale callbacks after reset. Keep this lifecycle fix separate from handshake wire compatibility.
|
Updated to 91bf2d1 with two separate commits:
Added three CQ regression tests covering event/polling and copy/zero-copy: close during dispatch, callback release of the last main-Socket reference, and callbacks after reset. The close tests use the event dispatcher and actual polling workers. Local Linux validation: URMA 59 tests, fallback 8, common handshake 28, RDMA 92, UBSHM 43; TCP-only fallback 8; Release static-library build. CQ tests passed 100 shuffled repetitions both normally and under ASan (detect_leaks=0). Removing each lifetime protection made its corresponding regression fail, including an ASan heap-use-after-free report for endpoint access before pinning the main Socket. All temporary mutations were restored. The CQ lifecycle change is separate from handshake wire compatibility. Hardware validation of this new lifecycle fix is the next test step. CI is running for the updated head. |
|
Updated in e894f75:
The PR file diff now contains no workflow changes and no changes to either URMA document. Runtime code and tests are unchanged by this cleanup. The description now distinguishes the existing URMA transport from the common-handshake integration; the current urma-handshake base also means this PR includes the framework from apache/brpc PR3535. The Linux workflow retains the community master-only trigger, so it does not run automatically for this fork PR targeting urma-handshake. The previous 24-check result belongs to 91bf2d1. |
|
Addressed the five comment/style findings in 48640dc:
Validation: URMA 59 tests, fallback 8, common handshake 28, trace tests repeated 100 times with shuffling, Release static-library build, and git diff --check passed. Changes are limited to four headers. CI workflows and the existing Chinese/English URMA documents remain unchanged from community master. |
Summary
Scope
The target branch is urma-handshake. This branch includes the common transport-handshake framework from apache#3535 and the URMA follow-up changes.
URMA transport support and its Chinese/English documentation are already in community master through apache#3428. The existing URMA documents and .github/workflows/ci-linux.yml are kept identical to apache/brpc master at 87d498d. The common-handshake design document describes the framework and URMA integration introduced here.
Local validation
Hardware restart/reconnect validation
User-run node2 client to node1 server, using the system liburma, bonding_dev_0 in standalone mode, v3 common handshake on both peers and 8192-byte buffers. Each run used 4 workers, queue depth 16, target 250 QPS per worker, a 128-byte echoed attachment and a 180-second client duration. The server was stopped with Ctrl+C and restarted during client traffic.
All four combinations recovered to approximately 1000 QPS. The supplied log excerpts show the cumulative error count remaining constant in the final samples; the completion/import/protocol/FATAL/fallback searches returned no matches. Counts below include RPC failures during the intentional server downtime.
The earlier PR59 hardware record includes 1 MiB echo and five-minute concurrent echo with errors=0. These are separate from the restart/reconnect runs above.