mirror of
https://github.com/rustfs/rustfs.git
synced 2026-10-04 12:31:36 +00:00
d0ce2f758b
* fix(ecstore): bound decommission target gate contention Target capacity gate contention during pool decommission escalated a per-object transient into a durable bucket pause: each contended object failed its bucket entry, which re-ran the whole bucket listing and amplified attempts on the same objects. - centralize the decommission capacity failure classification so gate contention, benign contention and fatal failures are decided once - retry target-gate contention inline (bounded, jittered) before a mutation is admitted, covering put, part, complete, new-multipart and abort - defer contended entries to the end of the round instead of failing the bucket entry, and require the deferred set to drain before a set completes - treat a missing object or version, an overwrite and a superseded upload id as benign contention that is neither counted as a failure nor escalated - use full-jitter exponential backoff, capped, for decommission retries - expose the capacity pause reason, the waiting reason and a cumulative pause count in the admin pool status, plus gate-retry and per-object attempt metrics Related: rustfs/backlog#2644 * fix(ecstore): correct deferred replay and metadata compatibility