From 1dd538e729d204954f79c284db8f98b38e6e3b4a Mon Sep 17 00:00:00 2001 From: Sam Alba Date: Mon, 8 Nov 2021 17:29:33 -0800 Subject: [PATCH] mod: defer Unlock to avoid deadlocks in the pkg manager Signed-off-by: Sam Alba --- mod/mod.go | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/mod/mod.go b/mod/mod.go index 22c841f5..79f9ac46 100644 --- a/mod/mod.go +++ b/mod/mod.go @@ -41,6 +41,8 @@ func Install(ctx context.Context, workspace, repoName, versionConstraint string) return nil, err } + defer fileLock.Unlock() + err = modfile.install(ctx, require) if err != nil { return nil, err @@ -50,10 +52,6 @@ func Install(ctx context.Context, workspace, repoName, versionConstraint string) return nil, err } - if err := fileLock.Unlock(); err != nil { - return nil, err - } - return require, nil } @@ -98,6 +96,8 @@ func Update(ctx context.Context, workspace, repoName, versionConstraint string) return nil, err } + defer fileLock.Unlock() + updatedRequire, err := modfile.updateToLatest(ctx, require) if err != nil { return nil, err @@ -107,10 +107,6 @@ func Update(ctx context.Context, workspace, repoName, versionConstraint string) return nil, err } - if err := fileLock.Unlock(); err != nil { - return nil, err - } - return updatedRequire, nil }