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)