From c12a9aee02ec07b78dce07274e4816d9863d765e Mon Sep 17 00:00:00 2001 From: lnattrass Date: Thu, 2 Apr 2020 17:49:20 -0400 Subject: [PATCH] fix(helm): Data race in kube/client Delete func. (#7820) helm uninstall has a data race in its Delete function. This resolves it using a mutex. Signed-off-by: Liam Nattrass --- pkg/kube/client.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkg/kube/client.go b/pkg/kube/client.go index b761c6d12..2cb7e45cf 100644 --- a/pkg/kube/client.go +++ b/pkg/kube/client.go @@ -246,12 +246,17 @@ func (c *Client) Update(original, target ResourceList, force bool) (*Result, err func (c *Client) Delete(resources ResourceList) (*Result, []error) { var errs []error res := &Result{} + mtx := sync.Mutex{} err := perform(resources, func(info *resource.Info) error { c.Log("Starting delete for %q %s", info.Name, info.Mapping.GroupVersionKind.Kind) if err := c.skipIfNotFound(deleteResource(info)); err != nil { + mtx.Lock() + defer mtx.Unlock() // Collect the error and continue on errs = append(errs, err) } else { + mtx.Lock() + defer mtx.Unlock() res.Deleted = append(res.Deleted, info) } return nil