Skip to content

feat: add common transport-level handshake for RDMA and UBSHM - #47

Open
zchuango wants to merge 37 commits into
masterfrom
transport-handshake
Open

zchuango wants to merge 37 commits into
masterfrom
transport-handshake

Conversation

@zchuango

Copy link
Copy Markdown

No description provided.

Spicy-cream and others added 28 commits October 15, 2026 19:32
…lity

Resolve UBSHM handshake conflicts using the tested rebased tree. Retain backend-specific format negotiation, remote shared-memory lengths, and upstream IPC V2 tests.
Resolve current master conflicts and preserve UBSHM IPC V2 negotiation
Resolve master conflict and preserve shared memory name safety
…refresh

Resolve modular CMake conflict and preserve handshake protobuf generation
Retain the in-flight I/O delay and release the transaction synchronously when deferred cleanup cannot be scheduled. Unlink before handing cleanup ownership away and detach the closed ring from the transaction pool slot.

Cover timerfd creation failure in active and callback cleanup paths, including shared-memory release and repeated close. Validated 177 handshake/RDMA/UBSHM tests and 83 ASan tests.
Keep transaction slots until both the connection and cleanup callbacks release their references. Pin device-event lookups under the manager lock and route passive and timed-out closes through one cleanup owner.

Preserve UBS mapping metadata during unlink, reject non-positive cleanup delays, and complete the in-flight I/O wait after signal interruptions.

Validate with 182 handshake/RDMA/UBSHM tests, 88 ASan tests, and 10 repeated rounds of the three lifetime regression cases.
Store the owning SocketId in queued poll events and acquire its reference before accessing the endpoint. Ignore events for an old poller after the endpoint resets.

Reproduced the previous owner-release interleaving with ASan. Validate the fixed path with 54 UBSHM ASan tests, 54 regular UBSHM tests and 37 common handshake tests.
Transfer failed mapping cleanup to tasks that retain their remaining unmap and deallocate operations. Release transaction references after handoff, clean both sides independently, and stop retry callbacks before SDK finalization.

Add eight SDK fault-injection regressions covering slot reuse, independent retries, duplicate requests, rejected handoff, and shutdown ordering. Validation: 191 regular tests, 97 ASan tests, and 80 repeated ASan regression executions passed.
Serialize named allocation with cleanup retries and keep existing SDK objects intact. Reserve rollback storage before allocation, retain transaction ownership before mapping resources, and route allocation failures through the abort cleanup path.

Replace the retry counter race with a callback barrier and synchronized transaction inspection. Add name reuse, failed mapping, partial allocation, and rejected rollback regressions. Validation: 196 regular tests, 102 ASan tests, and 260 repeated ASan regression executions passed.
…ship

Register shared-memory names before SDK calls and defer device-event cleanup until queues are initialized. Abort construction after a recorded fault and publish ready resources under the transaction-manager lock.

Track name release independently from mapping cleanup. Serialize unlink with resource handoff, unmap already unlinked resources without deleting reused names, and leave peer names to their creators. Cover construction-time faults, active faults, unlink races, and UBS/IPC name reuse.

Validation: 203 regular tests, 109 ASan tests, and 400 repeated ASan regression executions passed with local SDK stubs.
Dispatch the final parsed message to a business bthread so a blocking response callback cannot stall the shared poller. Stop and join pollers at process exit before their static storage is destroyed. Add regressions for message dispatch and exit ordering.
Send and join bounded RPC batches from workers before releasing channels. Pace requests without the initial 10000-token burst, reset pacing between runs, validate echoed attachments, and return a failure status for RPC errors. Report QPS without truncating low request rates.
Use GTEST_FLAG_GET and GTEST_FLAG_SET so the death-test style works with both native GoogleTest flags and the Abseil flag backend used by Bazel. Verify GCC and Clang compilation with GTEST_HAS_ABSL enabled and run all 76 UBSHM tests.
The two remaining Linux checks failed while downloading Thrift, before compilation. Trigger a fresh CI run without changing code or workflow configuration.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants