From 7b7e5f38f75362c763964f24707467c402ee1b2a Mon Sep 17 00:00:00 2001 From: Zhengchao An Date: Thu, 27 Aug 2026 10:08:25 +0800 Subject: [PATCH] test(get): tolerate quorum-tolerated disk gaps in relocated-pool test (#6707) --- rustfs/src/app/object/get.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/rustfs/src/app/object/get.rs b/rustfs/src/app/object/get.rs index ccac5587c..6a3ecdcbd 100644 --- a/rustfs/src/app/object/get.rs +++ b/rustfs/src/app/object/get.rs @@ -7173,12 +7173,25 @@ mod tests { }) .expect("multipart object must be placed in one source pool"); if upload_pool != 0 { + let mut normalized_disks = 0; for (source_disk, target_disk) in pool_disk_paths[upload_pool].iter().zip(&pool_disk_paths[0]) { let source_object = source_disk.join(&bucket).join(object); + // The multipart commit succeeds on write quorum, so under suite + // IO load a lagging disk of the erasure set can legitimately + // hold no object directory (#6701). Normalize the disks that + // do hold it; the reader tolerates the same minority gap. + if !source_object.exists() { + continue; + } let target_bucket = target_disk.join(&bucket); std::fs::create_dir_all(&target_bucket).expect("create normalized target bucket directory"); std::fs::rename(source_object, target_bucket.join(object)).expect("normalize the test object into the old pool"); + normalized_disks += 1; } + assert!( + normalized_disks > pool_disk_paths[upload_pool].len() / 2, + "a write-quorum majority of the upload pool's disks must hold the multipart object to normalize" + ); } let source_pool = 0; let target_pool = 1;