Two-pool restart and decommission attempts stay on current server
behavior. Appending pools and restarting is asserted to fail closed
on pool-meta recovery. Cluster wait loops fail fast if a node process
exits.
Co-authored-by: RustFS <hello@rustfs.com>
Distributed e2e must observe current server behavior, including the
localhost pool.bin write fence. Restore combine_across_pools to the
equality merge on origin/main.
Co-authored-by: RustFS <hello@rustfs.com>
Seed a 4-node cluster on the pinned previous release, then prove
direct and rolling upgrades keep historical objects and IAM AK/SK
working. The distributed Actions lane now downloads that binary.
Co-authored-by: RustFS <hello@rustfs.com>
Delete-then-recreate races with peer bucket cache (NoSuchBucket). Cross-node
list and GET of a live object is the distributed property this case can
assert reliably.
Co-authored-by: RustFS <hello@rustfs.com>
Treat decommission/rebalance 5xx as the localhost pool.bin write fence,
start four-pool clusters via expand so S3 PUTs succeed, and drop the
4-node volume-proxy case that cannot format through FaultProxy.
Co-authored-by: RustFS <hello@rustfs.com>
Classify localhost DistErasure pool-meta write fences instead of failing
the suite when decommission/rebalance POST is blocked, use the proven 2x2
volume-proxy topology, and add peer-kill GET plus bucket recreate cases.
Co-authored-by: RustFS <hello@rustfs.com>
Combining a Fresh format-load proof with None from a peer-formatted pool
was collapsing to no authority, so localhost multi-pool clusters never
wrote pool.bin. Treat None as no opinion. Also stabilize the 4-node
quota and volume-proxy e2e cases.
Co-authored-by: RustFS <hello@rustfs.com>
Add a nightly e2e-distributed lane that boots localhost 4-node clusters
and covers S3, object lock, versioning, replication, quota, expand,
decommission, rebalance, site replication, concurrency, and chaos.
Co-authored-by: RustFS <hello@rustfs.com>