From 88caa7514f7f666258193ca4414d2d247addb372 Mon Sep 17 00:00:00 2001 From: Yusuke Kuoka Date: Mon, 28 Oct 2019 13:24:27 +0900 Subject: [PATCH] fix potential race in sync --- pkg/state/state.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkg/state/state.go b/pkg/state/state.go index f9b56dbe..9a9dcf42 100644 --- a/pkg/state/state.go +++ b/pkg/state/state.go @@ -523,18 +523,24 @@ func (st *HelmState) syncReleaseGroup(affectedReleases *AffectedReleases, helm h args = []string{"--purge"} } deletionFlags := st.appendConnectionFlags(args, release) + m.Lock() if err := helm.DeleteRelease(context, release.Name, deletionFlags...); err != nil { affectedReleases.Failed = append(affectedReleases.Failed, release) relErr = newReleaseError(release, err) } else { affectedReleases.Deleted = append(affectedReleases.Deleted, release) } + m.Unlock() } } else if err := helm.SyncRelease(context, release.Name, chart, flags...); err != nil { + m.Lock() affectedReleases.Failed = append(affectedReleases.Failed, release) + m.Unlock() relErr = newReleaseError(release, err) } else { + m.Lock() affectedReleases.Upgraded = append(affectedReleases.Upgraded, release) + m.Unlock() installedVersion, err := st.getDeployedVersion(context, helm, release) if err != nil { //err is not really impacting so just log it st.logger.Debugf("getting deployed release version failed:%v", err)