fix: preserve remote rollback options and reject stale read quorums

Signed-off-by: Feng Ruohang <rh@vonng.com>
This commit is contained in:
Feng Ruohang
2026-10-25 00:37:21 +08:00
parent d8b77e5f3b
commit b55495aef0
7 changed files with 101 additions and 38 deletions
+10
View File
@@ -935,6 +935,16 @@ func (er erasureObjects) getObjectFileInfo(ctx context.Context, bucket, object s
if err != nil {
return FileInfo{}, nil, nil, time.Time{}, "", err
}
for i, meta := range metaArr {
if errs[i] == nil && meta.IsValid() && meta.VersionID == fi.VersionID && meta.ModTime.After(fi.ModTime) {
// A quorum of an older generation does not resolve a later
// overwrite of the same version. Keep the uncertainty visible
// instead of silently rolling the object back on reads.
return FileInfo{}, nil, nil, time.Time{}, "", InsufficientReadQuorum{
Err: errErasureReadQuorum, Type: RQInconsistentMeta,
}
}
}
onlineMeta := make([]FileInfo, len(metaArr))
for i, disk := range onlineDisks {