From 24895f2a248b6de055d68dac6c6bdfe62cb85fa1 Mon Sep 17 00:00:00 2001 From: south-mer <161788436+south-mer@users.noreply.github.com> Date: Wed, 14 May 2025 20:38:07 +0900 Subject: [PATCH] Fix no child processes error (#2048) --- pkg/errors/command.go | 15 +++++++++++++++ pkg/module/go_get_fetcher.go | 2 +- pkg/module/go_vcs_lister.go | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 pkg/errors/command.go diff --git a/pkg/errors/command.go b/pkg/errors/command.go new file mode 100644 index 00000000..8afd06db --- /dev/null +++ b/pkg/errors/command.go @@ -0,0 +1,15 @@ +package errors + +import "strings" + +// IsNoChildProcessesErr returns true for an error from +// exec.Command().Run() that can be safely ignored. +// Reference: https://github.com/slimtoolkit/slim/blob/79b63a80c10083ece51be0ef1fd1e7c090ff6346/pkg/util/errutil/errutil.go#L95-L110 +func IsNoChildProcessesErr(err error) bool { + if err == nil { + return false + } + + return strings.Contains(err.Error(), "wait: no child processes") || + strings.Contains(err.Error(), "waitid: no child processes") +} diff --git a/pkg/module/go_get_fetcher.go b/pkg/module/go_get_fetcher.go index c9e59d29..2668caae 100644 --- a/pkg/module/go_get_fetcher.go +++ b/pkg/module/go_get_fetcher.go @@ -143,7 +143,7 @@ func downloadModule( cmd.Stderr = stderr err := cmd.Run() - if err != nil { + if err != nil && !errors.IsNoChildProcessesErr(err) { err = fmt.Errorf("%w: %s", err, stderr) var m goModule if jsonErr := json.NewDecoder(stdout).Decode(&m); jsonErr != nil { diff --git a/pkg/module/go_vcs_lister.go b/pkg/module/go_vcs_lister.go index b9e3f041..82a5f454 100644 --- a/pkg/module/go_vcs_lister.go +++ b/pkg/module/go_vcs_lister.go @@ -81,7 +81,7 @@ func (l *vcsLister) List(ctx context.Context, module string) (*storage.RevInfo, cmd.Env = prepareEnv(gopath, l.env) err = cmd.Run() - if err != nil { + if err != nil && !errors.IsNoChildProcessesErr(err) { err = fmt.Errorf("%w: %s", err, stderr) if errors.IsErr(timeoutCtx.Err(), context.DeadlineExceeded) { return nil, errors.E(op, err, errors.KindGatewayTimeout)