refactor: prune notify ecstore object alias (#3620)

This commit is contained in:
安正超
2026-06-19 20:11:56 +08:00
committed by GitHub
parent a5058e955d
commit 08b8f58e64
11 changed files with 123 additions and 101 deletions
+37 -8
View File
@@ -5,16 +5,16 @@ 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-ecstore-object-boundary-guards`
- Baseline: latest `main` after `rustfs/rustfs#3616`
(`8d91e2116f53fabc5f8a12a7cc48eb9d72cfcf10`).
- Branch: `overtrue/arch-iam-object-boundary-prune`
- Baseline: stacked after `rustfs/rustfs#3620`
(`c7bee5de904c9a1ea70f73ad6621895a30b3c387`).
- PR type for this branch: `consumer-migration`
- Runtime behavior changes: none.
- Rust code changes: none.
- CI/script changes: snapshot the exact remaining external
`rustfs_ecstore::object_api` compatibility aliases and reject new
object-api names outside the approved boundary surface.
- Docs changes: record the API-067 ECStore object API boundary guard slice.
- Rust code changes: route IAM config/store object metadata and options aliases
through `rustfs_storage_api::ObjectOperations` associated types.
- CI/script changes: shrink the remaining external `rustfs_ecstore::object_api`
compatibility alias snapshot by removing IAM object-info/options aliases.
- Docs changes: record the API-069 IAM object boundary prune slice.
## Phase 0 Tasks
@@ -331,6 +331,35 @@ Status values: `[ ]` not started, `[~]` in progress, `[x]` complete, `[!]` block
- Verification: bash syntax check, migration and layer guards, formatting,
diff hygiene, full pre-commit, and three-expert review.
- [x] `API-068` Prune notify ECStore object-info compatibility alias.
- Completed slice: remove notify's private `EcstoreObjectInfo` alias and
ECStore-object conversion implementation, then map ECStore event objects to
`NotifyObjectInfo` inside the RustFS event and operation notification
bridges.
- Acceptance: `crates/notify` no longer references
`rustfs_ecstore::object_api::ObjectInfo`, the remaining object-api alias
allowlist shrinks accordingly, and notify event payload fields keep the
same serialized values.
- Must preserve: live event dispatch behavior, event names, bucket/object
fields, version IDs, metadata, restore-completed timestamps, storage class,
transitioned tier, host/port parsing, and replication request filtering.
- Verification: focused RustFS event conversion test, focused notify/RustFS
compile checks, migration and layer guards, formatting, diff hygiene, full
pre-commit, and three-expert review.
- [x] `API-069` Prune IAM direct ECStore object metadata/options aliases.
- Completed slice: replace IAM config and store `ObjectInfo`/`ObjectOptions`
compatibility aliases with `IamStore` `ObjectOperations` associated types.
- Acceptance: IAM no longer names
`rustfs_ecstore::object_api::{ObjectInfo,ObjectOptions}` directly, the
remaining object-api alias allowlist shrinks by four entries, and IAM config
read/write metadata and lazy-rewrite precondition behavior are unchanged.
- Must preserve: IAM config encryption/decryption, lazy rewrite ETag matching,
list walk item/error typing, metadata return shape, storage preconditions,
system-path failure classification, and notification peer behavior.
- Verification: focused IAM compile/tests, migration and layer guards,
formatting, diff hygiene, 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