From 020eeba85d164225cd413f3e93bfb967f19e8830 Mon Sep 17 00:00:00 2001 From: ribejara-te <98832238+ribejara-te@users.noreply.github.com> Date: Sat, 19 Nov 2022 01:19:24 +0100 Subject: [PATCH] upgrade Git clone locking mechanism to go1.19 (#2521) Co-authored-by: nitrocode <7775707+nitrocode@users.noreply.github.com> --- server/events/working_dir.go | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/server/events/working_dir.go b/server/events/working_dir.go index 2a4d4973f..5476f1791 100644 --- a/server/events/working_dir.go +++ b/server/events/working_dir.go @@ -14,7 +14,6 @@ package events import ( - "context" "fmt" "os" "os/exec" @@ -26,7 +25,6 @@ import ( "github.com/pkg/errors" "github.com/runatlantis/atlantis/server/events/models" "github.com/runatlantis/atlantis/server/logging" - "golang.org/x/sync/semaphore" ) const workingDirPrefix = "repos" @@ -204,15 +202,12 @@ func (w *FileWorkspace) forceClone(log logging.SimpleLogging, headRepo models.Repo, p models.PullRequest) error { - value, _ := cloneLocks.LoadOrStore(cloneDir, semaphore.NewWeighted(1)) - sem := value.(*semaphore.Weighted) + value, _ := cloneLocks.LoadOrStore(cloneDir, new(sync.Mutex)) + mutex := value.(*sync.Mutex) - defer sem.Release(1) - if acquired := sem.TryAcquire(1); !acquired { - err := sem.Acquire(context.TODO(), 1) - if err != nil { - return errors.Wrap(err, "waiting for repository to be cloned") - } + defer mutex.Unlock() + if locked := mutex.TryLock(); !locked { + mutex.Lock() return nil }