mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-06 13:27:43 +00:00
71f2e7a209
When a fresh multi-node cluster starts, the first disk detects all disks as unformatted and initializes the format. However, `should_init_erasure_disks` and `quorum_unformatted_disks` only counted `UnformattedDisk` errors. Remote peers that have not yet started their gRPC server return transient network errors (connection refused, timeout) instead of `UnformattedDisk`, causing the first disk to miss the "all unformatted" signal and creating a deadlock: first disk retries endlessly while non-first disks wait for it. Add `is_unformatted_or_transient_network` that treats transient network errors as equivalent to `UnformattedDisk` for the bootstrap decision. A remote disk that cannot be reached during fresh-cluster startup is indistinguishable from an unformatted disk — the peer may simply not have started its gRPC server yet. Fixes #5655