docs(internode): keep transport adapter oss scoped Co-authored-by: Henry Guo <marshawcoco@users.noreply.github.com>
3.0 KiB
Internode Transport Capabilities
Status: design note for backend-neutral capability reporting. This document does not add a backend or transport crate.
Open-source Scope
The OSS scope is:
- define honest capability reporting for the
InternodeDataTransportadapter; - keep
tcp-httpas the default backend; - keep existing TCP/HTTP behavior unchanged;
- document the capability fields needed for maintainable transport code;
- avoid adding dependencies or backend implementations.
The OSS scope is not:
- adding another transport backend;
- replacing the current TCP/HTTP path;
- adding benchmark plans for another transport;
- changing object correctness semantics.
Purpose
InternodeDataTransportCapabilities describes what a backend can honestly do
for RustFS internode data-plane transfers. The fields describe observable
adapter behavior without naming a specific transport implementation.
The capability report is descriptive. It does not select a backend, negotiate with peers, or weaken object correctness semantics.
Capability Fields
| Field | Meaning |
|---|---|
streaming_read |
The backend can open a remote disk reader for read_file_stream. |
streaming_write |
The backend can open a remote disk writer for create_file or append_file. |
streaming_walk_dir |
The backend can stream walk_dir responses. |
ordered_delivery |
Bytes for each opened transfer are delivered in order. |
max_transfer_size |
Optional RustFS-level cap for a single transfer. None means no additional cap beyond the backend/protocol/runtime limits. |
fallback_supported |
The backend can participate in the behavior-preserving TCP fallback path. |
TCP/HTTP Backend
The default TCP/HTTP backend reports only capabilities it actually provides:
| Field | TCP/HTTP value | Reason |
|---|---|---|
streaming_read |
true |
HttpReader streams /rustfs/rpc/read_file_stream responses. |
streaming_write |
true |
HttpWriter streams /rustfs/rpc/put_file_stream request bodies. |
streaming_walk_dir |
true |
HttpReader streams /rustfs/rpc/walk_dir responses. |
ordered_delivery |
true |
Each HTTP request body or response body is consumed as an ordered byte stream. |
max_transfer_size |
None |
RustFS does not impose an extra per-transfer cap at the capability layer. |
fallback_supported |
true |
TCP/HTTP is the behavior-preserving default and fallback path. |
Capability Compatibility
Any new capability field should describe observable RustFS behavior without assuming a specific transport implementation:
| Capability shape | Interpretation |
|---|---|
max_transfer_size=Some(n) |
The backend has a RustFS-visible transfer size ceiling and callers must split larger transfers or use fallback behavior. |
ordered_delivery=false |
The backend cannot be used behind the current stream API without an ordering or reassembly layer. |
Unsupported or mismatched capabilities must not silently change quorum, integrity verification, retry, or timeout semantics.