mirror of
https://github.com/rustfs/rustfs.git
synced 2026-07-27 16:48:58 +00:00
47c1e730c7
Erasure heal set write_quorum to the count of available target writers, so every replacement disk had to succeed writing every block or the whole object heal aborted. A single flapping replacement disk failing one block made MultiWriter::write return Err, heal propagate Err, and the ops layer delete the entire tmp staging dir — leaving the other healthy replacement disks unhealed and blocking redundancy recovery indefinitely. Set the heal write_quorum to 1, matching upstream MinIO's writeQuorum=1 for heal. MultiWriter already marks a failed writer as None, and the ops layer (set_disk/ops/heal.rs) already drops the failed writer while committing the survivors; the read-side quorum check and parity cross-checks that guarantee reconstruction correctness are unchanged. Add regression tests: one healthy-and-one-failing target still heals the healthy targets and drops the failing one; all-targets-failing still returns Err so nothing is falsely committed. Fixes #947 Co-authored-by: heihutu <heihutu@gmail.com>