mirror of https://github.com/minio/minio.git
Relax quorum agreement on DataDir values (#20232)
Previously, we checked if we had a quorum on the DataDir value. We are removing this check, which allows reading objects with different DataDir values in a few drives (due to a rebalance-stop race bug) provided their eTags or ModTimes match.
This commit is contained in:
parent
53eb7656de
commit
04be352ae9
|
@ -289,13 +289,14 @@ func findFileInfoInQuorum(ctx context.Context, metaArr []FileInfo, modTime time.
|
||||||
mtimeValid := meta.ModTime.Equal(modTime)
|
mtimeValid := meta.ModTime.Equal(modTime)
|
||||||
if mtimeValid || etagOnly {
|
if mtimeValid || etagOnly {
|
||||||
fmt.Fprintf(h, "%v", meta.XLV1)
|
fmt.Fprintf(h, "%v", meta.XLV1)
|
||||||
if !etagOnly {
|
|
||||||
// Verify dataDir is same only when mtime is valid and etag is not considered.
|
|
||||||
fmt.Fprintf(h, "%v", meta.GetDataDir())
|
|
||||||
}
|
|
||||||
for _, part := range meta.Parts {
|
for _, part := range meta.Parts {
|
||||||
fmt.Fprintf(h, "part.%d", part.Number)
|
fmt.Fprintf(h, "part.%d", part.Number)
|
||||||
|
fmt.Fprintf(h, "part.%d", part.Size)
|
||||||
}
|
}
|
||||||
|
// Previously we checked if we had quorum on DataDir value.
|
||||||
|
// We have removed this check to allow reading objects with different DataDir
|
||||||
|
// values in a few drives (due to a rebalance-stop race bug)
|
||||||
|
// provided their their etags or ModTimes match.
|
||||||
|
|
||||||
if !meta.Deleted && meta.Size != 0 {
|
if !meta.Deleted && meta.Size != 0 {
|
||||||
fmt.Fprintf(h, "%v+%v", meta.Erasure.DataBlocks, meta.Erasure.ParityBlocks)
|
fmt.Fprintf(h, "%v+%v", meta.Erasure.DataBlocks, meta.Erasure.ParityBlocks)
|
||||||
|
|
Loading…
Reference in New Issue