From d62966dd74c7c953474d293d50ae106465ceab22 Mon Sep 17 00:00:00 2001 From: wh1te909 Date: Mon, 22 May 2023 22:04:03 +0000 Subject: [PATCH] workaround for ETXTBSY race condition --- agent/agent.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/agent/agent.go b/agent/agent.go index 72c3aeb..a8db028 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -23,6 +23,7 @@ import ( "runtime" "strconv" "strings" + "syscall" "time" @@ -321,8 +322,21 @@ func (a *Agent) CmdV2(c *CmdOptions) CmdStatus { } }() - // Run and wait for Cmd to return, discard Status - envCmd.Start() + // workaround for https://github.com/golang/go/issues/22315 + for i := 0; i < 5; i++ { + <-envCmd.Start() + + <-doneChan + + status := envCmd.Status() + + if errors.Is(status.Error, syscall.ETXTBSY) { + a.Logger.Errorln("CmdV2 syscall.ETXTBSY, retrying...") + time.Sleep(500 * time.Millisecond) + } else { + break + } + } go func() { select {