From 88885b677689e26fa1b41e621f29ea90d4123d26 Mon Sep 17 00:00:00 2001 From: Brian Pursley Date: Fri, 29 May 2020 08:57:03 -0400 Subject: [PATCH] Avoid creating more delete collection workers than items to delete --- .../apiserver/pkg/registry/generic/registry/store.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/staging/src/k8s.io/apiserver/pkg/registry/generic/registry/store.go b/staging/src/k8s.io/apiserver/pkg/registry/generic/registry/store.go index 7f2c9022422..150daad0450 100644 --- a/staging/src/k8s.io/apiserver/pkg/registry/generic/registry/store.go +++ b/staging/src/k8s.io/apiserver/pkg/registry/generic/registry/store.go @@ -1006,12 +1006,19 @@ func (e *Store) DeleteCollection(ctx context.Context, deleteValidation rest.Vali if err != nil { return nil, err } + if len(items) == 0 { + // Nothing to delete, return now + return listObj, nil + } // Spawn a number of goroutines, so that we can issue requests to storage // in parallel to speed up deletion. - // TODO: Make this proportional to the number of items to delete, up to + // It is proportional to the number of items to delete, up to // DeleteCollectionWorkers (it doesn't make much sense to spawn 16 // workers to delete 10 items). workersNumber := e.DeleteCollectionWorkers + if workersNumber > len(items) { + workersNumber = len(items) + } if workersNumber < 1 { workersNumber = 1 }