mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-29 16:37:07 +00:00
8f0d4a20d1
The storage engine embedded a ~8.4K-line hand-written S3 HTTP client under crates/ecstore/src/client (rustfs/backlog#1842). That client is a legitimate engine capability — it consumes remote S3-compatible endpoints for ILM tier warm backends and transition targets — but it was misfiled inside the engine, dragging s3s/hyper wire types into ecstore and blocking ARCHITECTURE.md invariant 4. This PR is the pure-move step: 21 modules move verbatim to the new crates/s3-client crate (rustfs-s3-client), and crates/ecstore/src/client/mod.rs becomes a re-export shim so every in-crate crate::client:: path keeps working. The two server-side modules that were historically misfiled under client/ — object_api_utils.rs and object_handlers_common.rs — stay in ecstore. Three reverse dependencies from the client into engine internals are severed so the move can be pure: - transition_api::ReaderImpl::ObjectBody held ecstore's GetObjectReader; the client only ever reads the body, so the variant now holds an ObjectReader newtype over Box<dyn AsyncRead + Send + Sync + Unpin> with the same read_all() surface. The single production construction site (set_disk transition upload) and the two engine-side consumers were adjusted. - api_list/api_remove used ecstore's storage_api_contracts / object_api types; api_list now imports BucketInfo from rustfs-storage-api directly, and api_remove uses the client's own transition_api::ObjectInfo (only .name/.version_id were read; the error-path bucket name is now threaded as a parameter instead of read from the deleted objects). - the api_put_object_streaming regression tests built a GetObjectReader by hand; they now wrap the duplex stream in ObjectReader::new. Guard updates: the s3s footprint ratchet gains an ecstore-scoped counter (42 files, shrink-only, per rustfs/backlog#1842), the ecstore module-lint-blanket register follows the moved files into crates/s3-client so the blanket ratchet keeps covering them, the logging guardrail path pin follows transition_api.rs, and the ::other(format!) baseline is regenerated (moved call sites left ecstore). Verification: cargo check -p rustfs-s3-client -p rustfs-ecstore; cargo nextest run -p rustfs-s3-client (43 passed) and -p rustfs-ecstore (4515/4523; the 8 failures reproduce identically on pristine origin/main on the same machine); cargo clippy --all-targets; scripts/check_layer_dependencies.sh, check_architecture_migration_rules.sh, check_s3s_footprint.sh, check_logging_guardrails.sh, check_error_other_format_ratchet.sh, check_doc_paths.sh, check_ci_paths_sync.sh all pass.
74 lines
3.5 KiB
Plaintext
74 lines
3.5 KiB
Plaintext
# `::other(format!` ratchet baseline for crates/ecstore/src (backlog#1845 PR2).
|
|
#
|
|
# SHRINK-ONLY: entries are `count|file`. A PR may lower a count or drop a file
|
|
# (after replacing the call sites with typed variants) by re-running
|
|
# scripts/check_error_other_format_ratchet.sh --update-baseline. A PR that
|
|
# raises a count or adds a file is introducing a new quorum-bucketing hazard
|
|
# and must carry an explicit exemption rationale in its description.
|
|
2|crates/ecstore/src/bucket/bucket_target_sys.rs
|
|
4|crates/ecstore/src/bucket/lifecycle/bucket_lifecycle_ops.rs
|
|
3|crates/ecstore/src/bucket/lifecycle/durable_namespace.rs
|
|
2|crates/ecstore/src/bucket/lifecycle/metadata_boundary.rs
|
|
4|crates/ecstore/src/bucket/lifecycle/tier_delete_journal.rs
|
|
1|crates/ecstore/src/bucket/lifecycle/transition_transaction.rs
|
|
27|crates/ecstore/src/bucket/metadata.rs
|
|
22|crates/ecstore/src/bucket/metadata_sys.rs
|
|
3|crates/ecstore/src/bucket/msgp_decode.rs
|
|
1|crates/ecstore/src/bucket/object_lock/objectlock_sys.rs
|
|
3|crates/ecstore/src/bucket/quota/reservation.rs
|
|
1|crates/ecstore/src/bucket/replication/replication_object_config.rs
|
|
2|crates/ecstore/src/bucket/replication/replication_pool.rs
|
|
2|crates/ecstore/src/bucket/replication/replication_target_boundary.rs
|
|
3|crates/ecstore/src/cluster/rpc/http_auth.rs
|
|
2|crates/ecstore/src/cluster/rpc/internode_data_transport.rs
|
|
11|crates/ecstore/src/cluster/rpc/peer_rest_client.rs
|
|
10|crates/ecstore/src/cluster/rpc/peer_s3_client.rs
|
|
10|crates/ecstore/src/cluster/rpc/remote_disk.rs
|
|
7|crates/ecstore/src/config/com.rs
|
|
14|crates/ecstore/src/config/storageclass.rs
|
|
185|crates/ecstore/src/core/pools.rs
|
|
8|crates/ecstore/src/data_movement/mod.rs
|
|
2|crates/ecstore/src/data_usage/local_snapshot.rs
|
|
12|crates/ecstore/src/data_usage/mod.rs
|
|
5|crates/ecstore/src/disk/local.rs
|
|
1|crates/ecstore/src/disk/mod.rs
|
|
5|crates/ecstore/src/erasure/codec/bridge.rs
|
|
1|crates/ecstore/src/erasure/coding/decode_reader.rs
|
|
10|crates/ecstore/src/erasure/coding/encode.rs
|
|
25|crates/ecstore/src/erasure/coding/erasure.rs
|
|
4|crates/ecstore/src/layout/disks_layout.rs
|
|
2|crates/ecstore/src/layout/endpoint.rs
|
|
17|crates/ecstore/src/layout/endpoints.rs
|
|
1|crates/ecstore/src/layout/format.rs
|
|
1|crates/ecstore/src/layout/pool_space.rs
|
|
1|crates/ecstore/src/layout/set_layout.rs
|
|
19|crates/ecstore/src/object_api/readers.rs
|
|
1|crates/ecstore/src/object_api/types.rs
|
|
3|crates/ecstore/src/runtime/sources.rs
|
|
4|crates/ecstore/src/services/batch_processor.rs
|
|
14|crates/ecstore/src/services/notification_sys.rs
|
|
16|crates/ecstore/src/services/rebalance/control.rs
|
|
1|crates/ecstore/src/services/rebalance/entry.rs
|
|
8|crates/ecstore/src/services/rebalance/meta.rs
|
|
8|crates/ecstore/src/services/rebalance/runtime.rs
|
|
19|crates/ecstore/src/services/rebalance/worker.rs
|
|
33|crates/ecstore/src/services/tier/tier.rs
|
|
1|crates/ecstore/src/services/tier/tier_config.rs
|
|
1|crates/ecstore/src/services/tier/warm_backend_gcs.rs
|
|
1|crates/ecstore/src/services/tier/warm_backend_s3.rs
|
|
1|crates/ecstore/src/services/tier/warm_backend_wasabi.rs
|
|
7|crates/ecstore/src/set_disk/core/io_primitives.rs
|
|
1|crates/ecstore/src/set_disk/mod.rs
|
|
3|crates/ecstore/src/set_disk/ops/bitrot_self_verify.rs
|
|
2|crates/ecstore/src/set_disk/ops/heal.rs
|
|
8|crates/ecstore/src/set_disk/ops/multipart.rs
|
|
2|crates/ecstore/src/set_disk/ops/object.rs
|
|
3|crates/ecstore/src/set_disk/read.rs
|
|
5|crates/ecstore/src/store/bucket.rs
|
|
1|crates/ecstore/src/store/heal_walk.rs
|
|
12|crates/ecstore/src/store/init.rs
|
|
2|crates/ecstore/src/store/init_format.rs
|
|
3|crates/ecstore/src/store/multipart.rs
|
|
8|crates/ecstore/src/store/object.rs
|
|
5|crates/ecstore/src/store/rebalance/support.rs
|