From c6c4157c43c336a5bbe72b15067e54dfc1362a61 Mon Sep 17 00:00:00 2001 From: Stephane Moser Date: Sun, 4 Jul 2021 12:04:35 +0100 Subject: [PATCH] Move locks from global var to the structs Signed-off-by: Stephane Moser --- pkg/action/install.go | 8 ++++---- pkg/action/upgrade.go | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/pkg/action/install.go b/pkg/action/install.go index 7c6ed474a..a394155ff 100644 --- a/pkg/action/install.go +++ b/pkg/action/install.go @@ -69,8 +69,6 @@ const notesFileSuffix = "NOTES.txt" const defaultDirectoryPermission = 0755 -var installLock sync.Mutex - // Install performs an installation operation. type Install struct { cfg *Configuration @@ -109,6 +107,8 @@ type Install struct { // OutputDir/ UseReleaseName bool PostRenderer postrender.PostRenderer + // Lock to control raceconditions when the process receives a SIGTERM + Lock sync.Mutex } // ChartPathOptions captures common options used for controlling chart paths @@ -420,12 +420,12 @@ func (i *Install) handleSignals(c chan<- resultMessage, rel *release.Release) { }() } func (i *Install) reportToRun(c chan<- resultMessage, rel *release.Release, err error) { - installLock.Lock() + i.Lock.Lock() if err != nil { rel, err = i.failRelease(rel, err) } c <- resultMessage{r: rel, e: err} - installLock.Unlock() + i.Lock.Unlock() } func (i *Install) failRelease(rel *release.Release, err error) (*release.Release, error) { rel.SetStatus(release.StatusFailed, fmt.Sprintf("Release %q failed: %s", i.ReleaseName, err.Error())) diff --git a/pkg/action/upgrade.go b/pkg/action/upgrade.go index f050ad59f..f1ca96764 100644 --- a/pkg/action/upgrade.go +++ b/pkg/action/upgrade.go @@ -40,8 +40,6 @@ import ( "helm.sh/helm/v3/pkg/storage/driver" ) -var upgradeLock sync.Mutex - // Upgrade is the action for upgrading releases. // // It provides the implementation of 'helm upgrade'. @@ -106,6 +104,8 @@ type Upgrade struct { DisableOpenAPIValidation bool // Get missing dependencies DependencyUpdate bool + // Lock to control raceconditions when the process receives a SIGTERM + Lock sync.Mutex } type resultMessage struct { @@ -329,12 +329,12 @@ func (u *Upgrade) performUpgrade(originalRelease, upgradedRelease *release.Relea // In that case the upgrade will finish before the rollback is finished so it is necessary to wait for the rollback to finish. // The rollback will be trigger by the function failRelease func (u *Upgrade) reportToPerformUpgrade(c chan<- resultMessage, rel *release.Release, created kube.ResourceList, err error) { - upgradeLock.Lock() + u.Lock.Lock() if err != nil { rel, err = u.failRelease(rel, created, err) } c <- resultMessage{r: rel, e: err} - upgradeLock.Unlock() + u.Lock.Unlock() } // Setup listener for SIGINT and SIGTERM