mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-03 11:57:43 +00:00
refactor: remove ecstore operation compat facades (#3608)
This commit is contained in:
@@ -5,19 +5,17 @@ Status values: `[ ]` not started, `[~]` in progress, `[x]` complete, `[!]` block
|
||||
## Current Context
|
||||
|
||||
- Issue: [`rustfs/backlog#660`](https://github.com/rustfs/backlog/issues/660)
|
||||
- Branch: `overtrue/arch-foreground-scanner-admission-snapshots`
|
||||
- Baseline: `origin/main` after `rustfs/rustfs#3606`
|
||||
(`7cb7aefc3bfd33cfaa46c718db15f00b0471fe88`).
|
||||
- Branch: `overtrue/arch-ecstore-object-api-alias-prune`
|
||||
- Baseline: stacked after `rustfs/rustfs#3614`
|
||||
(`3740e65246aed8c8ee9685ed0234997c7d54e1b5`).
|
||||
- PR type for this branch: `consumer-migration`
|
||||
- Runtime behavior changes: none.
|
||||
- Rust code changes: extend the RustFS workload admission registry from
|
||||
repair/replication snapshots to foreground-read, scanner, and metadata owner
|
||||
snapshots.
|
||||
- CI/script changes: extend migration guard coverage for RustFS workload
|
||||
admission provider implementations.
|
||||
- Docs changes: add RustFS runtime owner provider notes to
|
||||
[`workload-admission-contracts.md`](workload-admission-contracts.md) and
|
||||
record the API-059/R-019 provider slice.
|
||||
- Rust code changes: remove unused public `rustfs-storage-api` passthrough
|
||||
aliases from ECStore `object_api` and bind the ECStore contract test directly
|
||||
to the storage-api generic list/delete/walk contracts.
|
||||
- CI/script changes: make the migration guard reject restoring ECStore
|
||||
`object_api` storage-api passthrough aliases.
|
||||
- Docs changes: record the API-066 ECStore object API alias prune slice.
|
||||
|
||||
## Phase 0 Tasks
|
||||
|
||||
@@ -214,6 +212,112 @@ Status values: `[ ]` not started, `[~]` in progress, `[x]` complete, `[!]` block
|
||||
check, migration and layer guards, formatting, diff hygiene, risk scan, and
|
||||
three-expert review.
|
||||
|
||||
- [x] `API-060` Remove heal and namespace-lock operation compatibility facades.
|
||||
- Completed slice: remove the old ECStore `store_api::HealOperations` and
|
||||
`store_api::NamespaceLocking` compatibility subtraits after ECStore storage
|
||||
types already implemented the shared `rustfs_storage_api` contracts
|
||||
directly.
|
||||
- Acceptance: internal ECStore bounds and compile-time coverage use the
|
||||
shared storage-api heal and namespace-lock contracts directly, while the
|
||||
remaining object/list/multipart compatibility bindings stay unchanged for
|
||||
their active internal consumers.
|
||||
- Must preserve: heal operation behavior, namespace-lock acquisition,
|
||||
replication resync locking, rebalance metadata locking, object I/O,
|
||||
multipart, list, and storage hot paths.
|
||||
- Verification: focused ECStore contract tests, focused ECStore library
|
||||
check, migration and layer guards, formatting, diff hygiene, risk scan, and
|
||||
three-expert review.
|
||||
|
||||
- [x] `API-061` Remove public ECStore object operation compatibility facades.
|
||||
- Completed slice: remove the old public ECStore `store_api` object, list,
|
||||
and multipart operation compatibility subtraits, and keep internal generic
|
||||
bounds on crate-private storage-api contract constraints instead of public
|
||||
downstream compatibility traits.
|
||||
- Acceptance: `store_api` no longer exports public operation compatibility
|
||||
traits, ECStore direct storage-api compile-time coverage includes object,
|
||||
object-operation, list, multipart, namespace-lock, heal, and admin
|
||||
contracts, and remaining public `store_api` exports are DTO/reader
|
||||
compatibility paths only.
|
||||
- Must preserve: object I/O, list/walk behavior, multipart behavior, config
|
||||
persistence, tier config migration, rebalance metadata locking, lifecycle
|
||||
journal handling, replication MRF/resync persistence, and downstream DTO
|
||||
import compatibility.
|
||||
- Verification: focused ECStore contract tests, focused ECStore library
|
||||
check, migration and layer guards, formatting, diff hygiene, risk scan, and
|
||||
three-expert review.
|
||||
|
||||
- [x] `API-062` Establish explicit ECStore object API boundary.
|
||||
- Completed slice: add `rustfs_ecstore::object_api` as the explicit public
|
||||
path for ECStore-owned object DTO and reader contracts, then migrate
|
||||
RustFS, scanner, heal, IAM, Swift, S3 Select, notify, and ECStore
|
||||
integration-test compatibility aliases away from the legacy public
|
||||
`store_api` path.
|
||||
- Acceptance: external compatibility boundary modules no longer reference
|
||||
`rustfs_ecstore::store_api` for ECStore-owned object DTO and reader
|
||||
aliases, while `store_api` remains available only as the old internal
|
||||
implementation module pending final compatibility removal.
|
||||
- Must preserve: object metadata shape, option defaults, reader/writer
|
||||
behavior, Swift/scanner/heal/IAM/S3 Select/notify boundary semantics, and
|
||||
all storage hot paths.
|
||||
- Verification: focused ECStore/RustFS/downstream compile checks, migration
|
||||
guard, formatting, diff hygiene, risk scan, and three-expert review.
|
||||
|
||||
- [x] `API-063` Make legacy ECStore store API module private.
|
||||
- Completed slice: remove `rustfs_ecstore::store_api` from the public crate
|
||||
module surface after external compatibility boundaries moved to
|
||||
`rustfs_ecstore::object_api`.
|
||||
- Acceptance: ECStore object DTO and reader compatibility remains available
|
||||
through `object_api`, integration contract tests consume the new public
|
||||
path, and migration rules reject restoring `pub mod store_api`.
|
||||
- Must preserve: internal ECStore object DTO definitions, reader/writer
|
||||
behavior, storage-api trait bindings, and downstream object/list/multipart
|
||||
compile-time contracts.
|
||||
- Verification: focused ECStore contract tests, migration guard, formatting,
|
||||
diff hygiene, risk scan, and three-expert review.
|
||||
|
||||
- [x] `API-064` Retire the ECStore store API module name.
|
||||
- Completed slice: move ECStore object DTO, reader, and option definitions
|
||||
from the private `store_api` module into the public `object_api` module,
|
||||
then migrate ECStore internal imports to `crate::object_api`.
|
||||
- Acceptance: no ECStore `store_api` module file or directory remains, public
|
||||
consumers keep using `rustfs_ecstore::object_api`, and migration rules
|
||||
reject restoring the retired module path.
|
||||
- Must preserve: object metadata shape, reader/writer behavior, storage-api
|
||||
contract bindings, object/list/multipart behavior, and downstream public
|
||||
object API compatibility.
|
||||
- Verification: focused ECStore compile checks, migration guard, formatting,
|
||||
diff hygiene, risk scan, and three-expert review.
|
||||
|
||||
- [x] `API-065` Use storage-api list contracts inside ECStore.
|
||||
- Completed slice: migrate ECStore internal list response, walk options, and
|
||||
walk result bindings to local aliases over the generic `rustfs-storage-api`
|
||||
contracts, including replication worker trait bounds, while retaining
|
||||
public `rustfs_ecstore::object_api` aliases for downstream compatibility.
|
||||
- Acceptance: ECStore implementation modules no longer import list/walk
|
||||
compatibility aliases from `crate::object_api`, and migration rules reject
|
||||
reintroducing those internal imports.
|
||||
- Must preserve: list response shape, walk result item shape, object metadata
|
||||
shape, storage-api trait bindings, and downstream public object API
|
||||
compatibility.
|
||||
- Verification: focused ECStore compile checks, migration guard, formatting,
|
||||
diff hygiene, risk scan, and three-expert review.
|
||||
|
||||
- [x] `API-066` Prune ECStore object API storage aliases.
|
||||
- Completed slice: remove unused public storage-api passthrough aliases from
|
||||
ECStore `object_api` for list responses, walk options, walk result items,
|
||||
and delete-object DTOs, then bind the ECStore contract test directly to the
|
||||
generic `rustfs-storage-api` contracts.
|
||||
- Acceptance: ECStore `object_api` no longer exposes storage-api passthrough
|
||||
aliases, the storage contract test still proves ECStore implements the
|
||||
storage-api traits with the same associated concrete types, and migration
|
||||
rules reject restoring the object_api passthrough aliases.
|
||||
- Must preserve: ECStore-owned object metadata, object options, reader/writer
|
||||
types, storage-api trait associated type bindings, list/delete/walk response
|
||||
shapes, and runtime behavior.
|
||||
- Verification: focused ECStore compile checks, storage contract test,
|
||||
downstream compile checks, migration and layer guards, formatting, diff
|
||||
hygiene, risk scan, full pre-commit, and three-expert review.
|
||||
|
||||
- [x] `TEST-PRTYPE-001` Check PR type enum consistency.
|
||||
- Acceptance: `./scripts/check_architecture_migration_rules.sh` parses the
|
||||
allowed PR types from [`crate-boundaries.md`](crate-boundaries.md) and fails
|
||||
|
||||
Reference in New Issue
Block a user