fix: return quorum based error, temporary failures must be ignored (#19732)

This commit is contained in:
Harshavardhana 2024-05-14 03:29:17 -07:00 committed by GitHub
parent 3bab4822f3
commit 9b219cd646
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 5 additions and 9 deletions

View File

@ -1351,7 +1351,7 @@ func (er erasureObjects) CompleteMultipartUpload(ctx context.Context, bucket str
return oi, toObjectErr(err, bucket, object, uploadID) return oi, toObjectErr(err, bucket, object, uploadID)
} }
if err = er.commitRenameDataDir(ctx, bucket, object, oldDataDir, onlineDisks); err != nil { if err = er.commitRenameDataDir(ctx, bucket, object, oldDataDir, onlineDisks, writeQuorum); err != nil {
return ObjectInfo{}, toObjectErr(err, bucket, object, uploadID) return ObjectInfo{}, toObjectErr(err, bucket, object, uploadID)
} }

View File

@ -1541,7 +1541,7 @@ func (er erasureObjects) putObject(ctx context.Context, bucket string, object st
return ObjectInfo{}, toObjectErr(err, bucket, object) return ObjectInfo{}, toObjectErr(err, bucket, object)
} }
if err = er.commitRenameDataDir(ctx, bucket, object, oldDataDir, onlineDisks); err != nil { if err = er.commitRenameDataDir(ctx, bucket, object, oldDataDir, onlineDisks, writeQuorum); err != nil {
return ObjectInfo{}, toObjectErr(err, bucket, object) return ObjectInfo{}, toObjectErr(err, bucket, object)
} }
@ -1787,7 +1787,7 @@ func (er erasureObjects) DeleteObjects(ctx context.Context, bucket string, objec
return dobjects, errs return dobjects, errs
} }
func (er erasureObjects) commitRenameDataDir(ctx context.Context, bucket, object, dataDir string, onlineDisks []StorageAPI) error { func (er erasureObjects) commitRenameDataDir(ctx context.Context, bucket, object, dataDir string, onlineDisks []StorageAPI, writeQuorum int) error {
if dataDir == "" { if dataDir == "" {
return nil return nil
} }
@ -1803,12 +1803,8 @@ func (er erasureObjects) commitRenameDataDir(ctx context.Context, bucket, object
}) })
}, index) }, index)
} }
for _, err := range g.Wait() {
if err != nil { return reduceWriteQuorumErrs(ctx, g.Wait(), objectOpIgnoredErrs, writeQuorum)
return err
}
}
return nil
} }
func (er erasureObjects) deletePrefix(ctx context.Context, bucket, prefix string) error { func (er erasureObjects) deletePrefix(ctx context.Context, bucket, prefix string) error {