mirror of
https://github.com/rustfs/rustfs.git
synced 2026-09-05 19:55:37 +00:00
revert(ecstore): drop pool-meta bootstrap change from test PR
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>
This commit is contained in:
@@ -4407,19 +4407,8 @@ pub(crate) enum PoolMetaBootstrapAuthority {
|
||||
}
|
||||
|
||||
impl PoolMetaBootstrapAuthority {
|
||||
/// Merge per-pool format-load proofs into one cluster bootstrap proof.
|
||||
///
|
||||
/// `None` means this pool did not prove bootstrap itself: it loaded an
|
||||
/// already-written `format.json`, usually formatted by that pool's first-disk
|
||||
/// peer. That must not cancel a `Fresh` or `LegacyAdoption` proof from another
|
||||
/// pool. Two different proven authorities still collapse to `None`.
|
||||
pub(crate) fn combine_across_pools(self, other: Self) -> Self {
|
||||
match (self, other) {
|
||||
(Self::None, proven) | (proven, Self::None) => proven,
|
||||
(Self::Fresh, Self::Fresh) => Self::Fresh,
|
||||
(Self::LegacyAdoption, Self::LegacyAdoption) => Self::LegacyAdoption,
|
||||
(Self::Fresh, Self::LegacyAdoption) | (Self::LegacyAdoption, Self::Fresh) => Self::None,
|
||||
}
|
||||
if self == other { self } else { Self::None }
|
||||
}
|
||||
|
||||
fn is_proven(self) -> bool {
|
||||
@@ -4427,23 +4416,6 @@ impl PoolMetaBootstrapAuthority {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod bootstrap_authority_combine_tests {
|
||||
use super::PoolMetaBootstrapAuthority::*;
|
||||
|
||||
#[test]
|
||||
fn none_does_not_cancel_a_proven_pool() {
|
||||
assert_eq!(Fresh.combine_across_pools(None), Fresh);
|
||||
assert_eq!(None.combine_across_pools(Fresh), Fresh);
|
||||
assert_eq!(LegacyAdoption.combine_across_pools(None), LegacyAdoption);
|
||||
assert_eq!(None.combine_across_pools(LegacyAdoption), LegacyAdoption);
|
||||
assert_eq!(Fresh.combine_across_pools(Fresh), Fresh);
|
||||
assert_eq!(None.combine_across_pools(None), None);
|
||||
assert_eq!(Fresh.combine_across_pools(LegacyAdoption), None);
|
||||
assert_eq!(LegacyAdoption.combine_across_pools(Fresh), None);
|
||||
}
|
||||
}
|
||||
|
||||
impl PoolMetaWriteState {
|
||||
#[cfg(test)]
|
||||
pub(crate) fn for_startup(cluster_id: uuid::Uuid, fresh_bootstrap_proven: bool) -> Self {
|
||||
|
||||
@@ -15,7 +15,7 @@ The in-tree harness runs every node on `127.0.0.1` with a distinct port. That ma
|
||||
|
||||
A pool striped across several localhost ports is not expressible (`RUSTFS_VOLUMES` host ellipses would collide on disk paths). Multi-host striped pools remain the hardware functional-chain / backlog #1313 / #1314 lane.
|
||||
|
||||
Decommission and rebalance POST currently 500 on localhost DistErasure multi-pool when pool.bin writes are fenced (`pool metadata writes remain blocked` / missing fleet capability proof). Those cases still assert object bytes and SHA-256; when the API starts they wait for completion and assert post-move integrity. They do not treat the fence as a successful move.
|
||||
Decommission and rebalance POST currently 500 on localhost DistErasure multi-pool when pool.bin writes are fenced (`pool metadata writes remain blocked` / missing fleet capability proof). Those cases still assert object bytes and SHA-256; when the API starts they wait for completion and assert post-move integrity. They do not treat the fence as a successful move. This lane does not change production pool-meta bootstrap or write-fence logic; it only observes the current server behavior.
|
||||
|
||||
## What this lane covers
|
||||
|
||||
|
||||
Reference in New Issue
Block a user