From bf38c0c0d10ad0fee788227e3d6f2c2aaeb0ea97 Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Thu, 18 Aug 2022 09:33:56 -0700 Subject: [PATCH] fix: increase concurrency of DeleteObjects() to N/10th (#15546) instead of keeping the value 10 and static, make the concurrency a function of incoming number of objects being deleted. --- cmd/erasure-server-pool.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/cmd/erasure-server-pool.go b/cmd/erasure-server-pool.go index e2a3d217e..1755df18a 100644 --- a/cmd/erasure-server-pool.go +++ b/cmd/erasure-server-pool.go @@ -1046,8 +1046,16 @@ func (z *erasureServerPools) DeleteObjects(ctx context.Context, bucket string, o poolObjIdxMap := map[int][]ObjectToDelete{} origIndexMap := map[int][]int{} + // Always perform 1/10th of the number of objects per delete + concurrent := len(objects) / 10 + if concurrent <= 10 { + // if we cannot get 1/10th then choose the number of + // objects as concurrent. + concurrent = len(objects) + } + var mu sync.Mutex - eg := errgroup.WithNErrs(len(objects)).WithConcurrency(10) + eg := errgroup.WithNErrs(len(objects)).WithConcurrency(concurrent) for j, obj := range objects { j := j obj := obj