Fix goroutine leak in perform

Signed-off-by: willzgli <willzgli@tencent.com>
This commit is contained in:
willzgli
2023-03-10 21:45:57 +08:00
parent e007c900ce
commit 11150cdcc6
3 changed files with 10 additions and 2 deletions

View File

@@ -37,6 +37,7 @@ import (
apiextv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
multierror "github.com/hashicorp/go-multierror"
"k8s.io/apimachinery/pkg/api/meta"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
@@ -532,6 +533,8 @@ func (c *Client) WatchUntilReady(resources ResourceList, timeout time.Duration)
}
func perform(infos ResourceList, fn func(*resource.Info) error) error {
var result error
if len(infos) == 0 {
return ErrNoObjectsVisited
}
@@ -542,10 +545,11 @@ func perform(infos ResourceList, fn func(*resource.Info) error) error {
for range infos {
err := <-errs
if err != nil {
return err
result = multierror.Append(result, err)
}
}
return nil
return result
}
// getManagedFieldsManager returns the manager string. If one was set it will be returned.