From d830f32d30e4ea9d9f06ae835db6ec5c4822dcfc Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Wed, 23 Jun 2021 14:38:27 +0300 Subject: [PATCH] Do not acquire job token when exiting top level instance --- ifchange.go | 4 +++- main.go | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/ifchange.go b/ifchange.go index 0f430fd..3a0ebf3 100644 --- a/ifchange.go +++ b/ifchange.go @@ -180,7 +180,9 @@ RebuildDeps: func ifchange(tgts []string, forced, traced bool) (bool, error) { jsInit() - defer jsAcquire("ifchange exiting") + if !IsTopRedo { + defer jsAcquire("ifchange exiting") + } defer Jobs.Wait() seen := buildDependants(tgts) oodTgtsClear() diff --git a/main.go b/main.go index 8c9c16d..860d63a 100644 --- a/main.go +++ b/main.go @@ -40,6 +40,7 @@ import ( var ( Cwd string BuildUUID string + IsTopRedo bool // is it the top redo instance ) func mustSetenv(key, value string) { @@ -229,6 +230,7 @@ func main() { BuildUUID = os.Getenv(EnvBuildUUID) tgtsWasEmpty := len(tgts) == 0 if BuildUUID == "" { + IsTopRedo = true raw := new([16]byte) if _, err = io.ReadFull(rand.Reader, raw[:]); err != nil { log.Fatalln(err) -- 2.44.0