mirror of
https://github.com/pgsty/minio.git
synced 2026-11-02 13:52:08 +03:00
Fix cross-parity version listing after pool removal (#267)
Availability-optimized writes can leave a readable null version across separate EC groups when a disk is unavailable. Recount ordinary null versions for all non-strict reads and cover version listing and complete pool removal with end-to-end tests. Signed-off-by: Feng Ruohang <rh@vonng.com>
This commit is contained in:
@@ -2027,9 +2027,11 @@ func mergeXLV2Versions(quorum int, strict bool, requestedVersions int, versions
|
||||
if !checkedSingleNull {
|
||||
singleNull = singleNullVersionStreams(originalVersions, false)
|
||||
// Availability-optimized writes can change EC while a drive
|
||||
// is offline. Only latest-only non-strict reads may recount
|
||||
// these ordinary null versions across separate modern EC groups.
|
||||
mixedECNull = !singleNull && !strict && requestedVersions == 1 &&
|
||||
// is offline. Only non-strict reads may recount these
|
||||
// ordinary null versions across separate modern EC groups.
|
||||
// Each stream holds just this version, so listing all
|
||||
// versions (decommission, rebalance) must recount too.
|
||||
mixedECNull = !singleNull && !strict &&
|
||||
singleNullVersionStreams(originalVersions, true)
|
||||
checkedSingleNull = true
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user