Repository navigation
Conversation
Pin the unified private runtime and stream implementation. Seed first-time opt-in dependency resolution from the public CLI lockfile while preserving an existing independent lockfile.
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Error displays hide actionable verification and completion diagnostics, and uploads can declare an incorrect payload length when a file changes between metadata lookup and reading.
2 open issues
What changed in this PR
Adds opt-in RDMA object transfers through a separately built executable, while keeping HTTP as the default and private native dependencies outside the normal workspace.
Changes:
- Introduces transport selection, provider interfaces, signed HTTPS control exchanges, and typed transfer outcomes.
- Integrates external uploads and downloads with checksum verification, atomic file publication, and restricted fallback.
- Shares the CLI launcher and adds optional-build tooling, documentation, and regression tests.
| File | Description |
|---|---|
scripts/tests/test_build_rdma.py |
Tests build preflight, arguments, and lockfile preservation. |
scripts/build-rdma.sh |
Adds the explicit private-build helper. |
README.md |
Links optional-build documentation. |
rdma/Cargo.toml |
Defines the independent native executable workspace. |
docs/rdma-build.md |
Documents building, selection, and runtime limitations. |
docs/ADR/0001-object-data-transport.md |
Records transport ownership and retry boundaries. |
crates/s3/src/payload_checksum.rs |
Adds streaming checksum verification. |
crates/s3/src/lib.rs |
Registers transport and checksum modules. |
crates/s3/src/data_transport.rs |
Defines provider interfaces and observed IO wrappers. |
crates/s3/src/client.rs |
Integrates external transfers, signing, and regression tests. |
crates/s3/Cargo.toml |
Adds the checksum implementation dependency. |
crates/core/src/lib.rs |
Exports transport policy and outcome types. |
crates/core/src/error.rs |
Adds typed transfer errors and exit-code propagation. |
crates/core/src/data_transport.rs |
Defines transport modes and outcome classifications. |
crates/core/src/admin/kms_diagnostic.rs |
Handles and clears transfer-error diagnostics. |
crates/cli/tests/help_contract.rs |
Includes the new global transport option. |
crates/cli/src/main.rs |
Delegates startup to the shared launcher. |
crates/cli/src/lib.rs |
Exports shared launcher functions. |
crates/cli/src/launcher.rs |
Preserves launch behavior and adds host cleanup support. |
crates/cli/src/commands/rb.rs |
Maps typed transfer errors to exit codes. |
crates/cli/src/commands/mod.rs |
Parses and applies global transport selection. |
Cargo.toml |
Excludes optional native workspaces. |
Cargo.lock |
Records the direct checksum dependency. |
.gitmodules |
Declares the private transport submodule. |
.gitignore |
Ignores optional-build artifacts and lockfile. |
Review effort: Balanced
| Network(String), | ||
|
|
||
| /// An external data operation with explicit acceptance and outcome state. | ||
| #[error("Object data transfer {state}: {message}")] |
| path, | ||
| operation: UploadOperation::PutObject { condition }, | ||
| options: options.write, | ||
| content_length: file_size, |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
Add opt-in object transfers through an independently built RDMA executable. The public S3 client owns HTTPS signing, request options, multipart management, file publication, and retry decisions. The private provider owns native payload delivery and operation reconciliation.
The private dependency is pinned to
fa81f604902a510801b882322b7abb9539a005d4. The independent build helper seeds a missing lockfile from the public workspace and preserves an existing optional-workspace lockfile.Verification
Validation on Rust 1.99.0 for head
7e2c52a3c9525470a80eaffe190827f917b605a1:CARGO_BUILD_JOBS=8 make -j8 pre-commitpassed: formatting, all-target workspace Clippy with-D warnings, and workspace tests with 1,950 passed and 2 ignored.cargo test --package rustfs-cli --test golden --features golden -j8: 5 passed.python3 -m unittest discover -s scripts/tests -p test_build_rdma.py -v: 7 passed.git diff --check origin/main...HEADpassed.git range-diffafter rebasing ontodebec391d60f67e02e16a7fa90a743b1c700ce19.Previously recorded native evidence includes 30 facade tests, all-target Clippy, and signed HTTPS CLI upload/download interoperability on Linux/aarch64 with software transport. The optional native executable was not rebuilt against the updated workspace dependencies during this rebase.
Hosted check snapshot
Checks for
7e2c52a: CI and Integration Tests. Dependency Advisories, Clippy, formatting, CLI compatibility, Golden tests, both Smoke jobs, documentation, protected-file checks, and MSRV have passed. Platform builds and workspace tests are still running; Full Integration was skipped.Compatibility
Existing CLI commands retain HTTP as the default, including in the optional executable. Ordinary builds require no private submodule or native libraries. Configuration and output schemas and exit-code definitions are unchanged.
BREAKING Rust source API changes: downstream exhaustive matches on
rc_core::Errormust handleDataTransfer, and direct construction ofClimust providedata_transport.Explicit RDMA requires an authenticated, certificate-verified HTTPS endpoint with matching gateway capabilities and the pinned native environment. SSE-C is unsupported by the current native provider;
autocan use HTTPS before admission. Unknown write outcomes do not permit generic operation replay.Review and limitations
Users can select
--data-transport httpor use the ordinary executable to disable external payload transport.