diff --git a/cmd/batch-expire.go b/cmd/batch-expire.go index 3a39f473c..7c7d1e1fb 100644 --- a/cmd/batch-expire.go +++ b/cmd/batch-expire.go @@ -342,8 +342,24 @@ func (r *BatchJobExpire) Expire(ctx context.Context, api ObjectLayer, vc *versio PrefixEnabledFn: vc.PrefixEnabled, VersionSuspended: vc.Suspended(), } - _, errs := api.DeleteObjects(ctx, r.Bucket, objsToDel, opts) - return errs + + allErrs := make([]error, 0, len(objsToDel)) + + for { + count := len(objsToDel) + if count == 0 { + break + } + if count > maxDeleteList { + count = maxDeleteList + } + _, errs := api.DeleteObjects(ctx, r.Bucket, objsToDel[:count], opts) + allErrs = append(allErrs, errs...) + // Next batch of deletion + objsToDel = objsToDel[count:] + } + + return allErrs } const (