fix: multiple pool reads parallelize when possible (#11537)

This commit is contained in:
Harshavardhana
2021-02-16 02:43:47 -08:00
committed by GitHub
parent cfc8b92dff
commit 7d4a2d2b68
2 changed files with 130 additions and 82 deletions

View File

@@ -370,12 +370,14 @@ func (er erasureObjects) getObject(ctx context.Context, bucket, object string, s
// GetObjectInfo - reads object metadata and replies back ObjectInfo.
func (er erasureObjects) GetObjectInfo(ctx context.Context, bucket, object string, opts ObjectOptions) (info ObjectInfo, err error) {
// Lock the object before reading.
lk := er.NewNSLock(bucket, object)
if err := lk.GetRLock(ctx, globalOperationTimeout); err != nil {
return ObjectInfo{}, err
if !opts.NoLock {
// Lock the object before reading.
lk := er.NewNSLock(bucket, object)
if err := lk.GetRLock(ctx, globalOperationTimeout); err != nil {
return ObjectInfo{}, err
}
defer lk.RUnlock()
}
defer lk.RUnlock()
return er.getObjectInfo(ctx, bucket, object, opts)
}