mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-04 20:37:43 +00:00
c138265440
Phase 5 Slice 4 (backlog#939): move the S3 region — a write-once identity scalar — out of the GLOBAL_REGION process static into the per-instance InstanceContext, so two instances can serve different regions. - InstanceContext gains `region: OnceLock<Region>` with `set_region()` / `region()`. `set_region` keeps the write-once fail-fast contract: a second write panics, exactly as the process global did (not downgraded to a warn). - global.rs `set_global_region` / `get_global_region` keep their signatures and forward to the current instance's context; the GLOBAL_REGION static is removed. Single-instance: startup writes the bootstrap context (which the ECStore adopts), so reads are unchanged. Tests: set/get round-trip, two contexts hold distinct regions, and a second set_region panics (fail-fast preserved). Verification: cargo test -p rustfs-ecstore (9 instance-context tests green), cargo clippy -p rustfs-ecstore --all-targets (clean), make pre-commit (pass). Refs: backlog#939 (Phase 5, Slice 4). Stacked on Slice 3 (#4417).