Skip to content

fix(storage): sync transition tier config across peers#2918

Merged
houseme merged 4 commits into
mainfrom
codex/fix-tier-config-sync
May 11, 2026
Merged

fix(storage): sync transition tier config across peers#2918
houseme merged 4 commits into
mainfrom
codex/fix-tier-config-sync

Conversation

@cxymds
Copy link
Copy Markdown
Member

@cxymds cxymds commented May 11, 2026

Related Issues

Fixes #2153

Summary of Changes

  • Reload transition tier configuration from shared storage before add, edit, and remove admin mutations.
  • Propagate successful transition tier configuration saves to peer nodes through load_transition_tier_config.
  • Implement the peer RPC handler for loading transition tier configuration locally.
  • Add focused regression coverage for the tier config reload RPC and unreachable peer reporting.

Verification

  • cargo fmt --all --check
  • cargo test test_unimplemented_rpcs --package rustfs --lib -- --nocapture
  • cargo test test_load_transition_tier_config_no_object_layer --package rustfs --lib --ignored --nocapture
  • cargo test load_transition_tier_config_reports_unreachable_peers -p rustfs-ecstore --lib -- --nocapture
  • cargo test load_bucket_metadata_reports_unreachable_peers -p rustfs-ecstore --lib -- --nocapture
  • NUM_CORES=1 CARGO_BUILD_JOBS=1 TEST_THREADS=1 CARGO_INCREMENTAL=0 CARGO_PROFILE_DEV_DEBUG=0 CARGO_PROFILE_TEST_DEBUG=0 make -f <(printf '.NOTPARALLEL:\ninclude Makefile\n') pre-commit

Impact

Transition tier configuration changes are now reloaded from shared storage before mutation and propagated to peer nodes after a successful local save. Peer propagation failures are logged and do not roll back the already-saved local admin operation.

Additional Notes

cargo-nextest was not installed locally, so make pre-commit used the repository fallback to cargo test.


Thank you for your contribution! Please ensure your PR follows the community standards (CODE_OF_CONDUCT.md). If this is your first contribution, review the CLA document and sign it by commenting I have read and agree to the CLA. on the PR.

@github-actions
Copy link
Copy Markdown
Contributor

CLA requirements are satisfied for this pull request.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR ensures transition tier configuration changes are consistently applied across a RustFS cluster by reloading the latest config before local mutations and triggering peer nodes to reload after a successful save via the internode notification/RPC path.

Changes:

  • Implement load_transition_tier_config RPC on NodeService to reload GLOBAL_TierConfigMgr from the object store.
  • Reload tier config from the object store before Add/Edit/Remove tier admin operations, and propagate the update to peers after local save.
  • Add a regression test ensuring peer propagation reports unreachable peers for transition-tier reload notifications.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

File Description
rustfs/src/storage/rpc/node_service.rs Implements the peer RPC handler that reloads transition tier config from the object store and updates tests accordingly.
rustfs/src/admin/handlers/tier.rs Reloads tier config before mutations and triggers best-effort peer reload notifications after local save for add/edit/remove.
crates/ecstore/src/notification_sys.rs Adds a focused test covering unreachable peer reporting for transition-tier config reload propagation.

Comment thread rustfs/src/admin/handlers/tier.rs Outdated
Comment thread rustfs/src/admin/handlers/tier.rs Outdated
Comment thread rustfs/src/admin/handlers/tier.rs Outdated
@houseme houseme added this pull request to the merge queue May 11, 2026
Merged via the queue into main with commit 8ef2c0a May 11, 2026
8 checks passed
@houseme houseme deleted the codex/fix-tier-config-sync branch May 11, 2026 15:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Tiered Storage Not Syncing Between Nodes in Cluster

3 participants