Repository navigation
ci: validate URMA common handshake - #59
Spicy-cream wants to merge 41 commits into
Conversation
* fix: harden transport fallback and UBSHM validation * fix: distinguish uninitialized client messenger * test: initialize client messenger for fallback coverage
…-refactor refactor: introduce transport handshake participants
| @@ -188,6 +190,164 @@ bool ValidHello(const ParsedHello& h) { | |||
| return true; | |||
| } | |||
|
|
|||
| namespace { | |||
|
|
|||
| const handshake::FrameSpec& UrmaV2FrameSpec() { | |||
| @@ -17,6 +17,8 @@ | |||
|
|
|||
| #include "brpc/urma/urma_handshake.h" | |||
…eature/urma-common-handshake
Request strong placement and ordered completions for payload SENDs and credit-only SEND_IMM work requests. Keep JFS out-of-order completion disabled. Add opt-in mock contract checks and bounded concurrent RPC regressions for copy and zero-copy receives. Document the ordering requirement without changing the handshake wire format or existing test bodies.
|
Updated with d6b2386 (Preserve URMA stream ordering across send work requests). The hardware trace showed a 229-byte SEND followed by a 2-byte SEND delivered in the opposite order with matching payload fingerprints. Both payload SEND and credit-only SEND_IMM now request URMA_STRONG_ORDER placement and comp_order=1; JFS out-of-order completion stays disabled. The handshake wire format and existing test bodies are unchanged. Added opt-in mock contract validation and two bounded concurrent RPC regressions covering copy and zero-copy receives. Both fail before the fix; separately removing ACK completion ordering also fails the new tests. Local Linux validation: 42 URMA tests repeated 100 times with shuffling; 24 common-handshake, 37 UBRing and 90 RDMA tests passed. Hardware confirmation on node1/node2 is still required; mock tests do not prove provider ordering behavior. SDK ordering reference: https://docs.openeuler.org/zh/docs/24.03_LTS_SP3/unifiedbus/unifiedbus/urma/URMA%20API%20Guide.ch.md |
Split each work request by the total SGE payload limit independently of the default 8192-byte pool blocks and advertised receive capacity. Keep the handshake wire format unchanged. Add opt-in mock size enforcement and large attachment echo regressions covering copy and zero-copy receives in event and polling modes. Verify boundary sizes and credit-window wraparound without changing existing test bodies.
|
Updated with 3704de0 (Limit URMA CTP SEND payloads to 4096 bytes). Cap the aggregate SGE payload of every SEND at 4096 bytes, matching the UMDK perftest CTP ceiling. Keep the default 8192-byte pool blocks, advertised receive capacity, ordering flags and handshake wire format unchanged. Large RPCs continue through multiple WRs as credits return. Added an opt-in mock maximum SEND size and four isolated large-attachment echo regressions: copy/zero-copy receives in event/polling modes. They check patterned payloads byte-for-byte at 4095/4096/4097 bytes, 8192 bytes, 1 MiB and 1 MiB plus one byte, including credit-window and queue wraparound. All four fail against the prior send path and pass after the fix. Existing test bodies are unchanged. Local Linux validation passed: 46 URMA tests repeated 100 times with shuffling; 24 common-handshake, 37 UBRing and 90 RDMA tests; static library build/install and performance client/server build. Hardware retest with default 8192-byte buffers is still required. The prior hardware comparison passed with 4096-byte buffers but timed out with 8192-byte buffers. |
|
Hardware validation for 3704de0 Tested on node1/node2 with the system URMA libraries, bonding_dev_0 in standalone mode, event-driven completions, and the default 8192-byte buffers.
No completion or protocol errors appeared in the client/server error searches. The 4096-byte CTP SEND cap resolves the large-message timeout with default 8192-byte buffers; the smaller-buffer workaround is no longer needed. Earlier hardware tests on d6b2386 passed at approximately 1000 QPS for 10 minutes and 4000 QPS for 5 minutes. Server restart testing also recovered normal traffic, with the error count remaining stable after recovery. The concurrent large-message test was rate-limited to approximately 200 QPS total. Disable trace for performance measurements. The hardware example checks RPC completion; byte-for-byte attachment validation is covered by the local regression tests. All 26 CI checks passed for 3704de0. The PR is mergeable. |
Condense build instructions, configuration and diagnostics. Refresh the URMA common-handshake description and retain ordering and CTP SEND size requirements.
CI-only validation of the URMA common-handshake migration. This draft is not intended to merge into master.
Current head: 86799cd.
This round guards the inactive URMA data path, validates the v3 transport-path type before narrowing, rejects unexpected TCP payload after a successful URMA upgrade, and releases partially allocated server resources before waiting for the fallback ACK. New no-device tests cover fragmented and coalesced URMA frames, invalid v3 values, the inactive transport path, and server TCP fallback with coalesced RPC data.
The Linux and macOS matrix is running for this head. Real URMA hardware interoperation and performance have not been validated.