mirror of
https://github.com/minio/minio.git
synced 2025-02-13 06:38:09 -05:00
do not list dangling objects with unmatched ECs (#20351)
This mostly applies to all new objects, this simply ignores these objects and no application would have to deal with getting 503s on them.
This commit is contained in:
parent
1cb824039e
commit
bb07df7e7b
@ -267,13 +267,19 @@ func (x xlMetaV2VersionHeader) String() string {
|
|||||||
// matchesNotStrict returns whether x and o have both have non-zero version,
|
// matchesNotStrict returns whether x and o have both have non-zero version,
|
||||||
// their versions match and their type match.
|
// their versions match and their type match.
|
||||||
// If they have zero version, modtime must match.
|
// If they have zero version, modtime must match.
|
||||||
func (x xlMetaV2VersionHeader) matchesNotStrict(o xlMetaV2VersionHeader) bool {
|
func (x xlMetaV2VersionHeader) matchesNotStrict(o xlMetaV2VersionHeader) (ok bool) {
|
||||||
|
ok = x.VersionID == o.VersionID && x.Type == o.Type && x.matchesEC(o)
|
||||||
if x.VersionID == [16]byte{} {
|
if x.VersionID == [16]byte{} {
|
||||||
return x.VersionID == o.VersionID &&
|
ok = ok && o.ModTime == x.ModTime
|
||||||
x.Type == o.Type && o.ModTime == x.ModTime
|
|
||||||
}
|
}
|
||||||
return x.VersionID == o.VersionID &&
|
return ok
|
||||||
x.Type == o.Type
|
}
|
||||||
|
|
||||||
|
func (x xlMetaV2VersionHeader) matchesEC(o xlMetaV2VersionHeader) bool {
|
||||||
|
if x.hasEC() && o.hasEC() {
|
||||||
|
return x.EcN == o.EcN && x.EcM == o.EcM
|
||||||
|
} // if no EC header this is an older object
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
// hasEC will return true if the version has erasure coding information.
|
// hasEC will return true if the version has erasure coding information.
|
||||||
@ -1967,6 +1973,11 @@ func mergeXLV2Versions(quorum int, strict bool, requestedVersions int, versions
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if !strict {
|
if !strict {
|
||||||
|
// we must match EC, when we are not strict.
|
||||||
|
if !a.header.matchesEC(ver.header) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
a.header.Signature = [4]byte{}
|
a.header.Signature = [4]byte{}
|
||||||
}
|
}
|
||||||
x[a.header]++
|
x[a.header]++
|
||||||
|
Loading…
x
Reference in New Issue
Block a user