mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-23 04:39:04 +00:00
4ad27860e3
The peer reload_pool_meta handler blindly replaced in-memory pool metadata with the persisted snapshot, so a delayed or out-of-order reload could roll back newer local queued/canceled/failed/complete decommission state, and a missing pool.bin wiped local state to an empty default. Route peer reload through the same monotonic merge used by the admin status refresh (merge_pool_status_refresh): entries are replaced only when strictly newer and no local worker is active; missing snapshots fail closed. The helper now reports whether any entry was replaced or appended, and rejected stale/missing reloads are logged. The RPC handler spawns missing decommission workers only after a reload actually merged newer state, so duplicate deliveries cannot start workers for an older generation. Fixes rustfs/backlog#1917