aboutsummaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2024-03-20 21:15:35 +0100
committerGitHub <noreply@github.com>2024-03-20 21:15:35 +0100
commit07bf3539ad88bfa29cac6a6e674e3b374e34892f (patch)
tree7d12b8d8cc2cef18f48d40a0209bf5c69212f39b /client
parent920cd603c0736fb7521d003713ae31c14c030901 (diff)
parent866f2363fe4da79ff3be3140a17c9b56c1a8c05b (diff)
Merge pull request #30693 from vespa-engine/arnej/warn-about-signal
Arnej/warn about signal
Diffstat (limited to 'client')
-rw-r--r--client/go/internal/admin/vespa-wrapper/configserver/start.go7
-rw-r--r--client/go/internal/osutil/run_cmd.go25
2 files changed, 30 insertions, 2 deletions
diff --git a/client/go/internal/admin/vespa-wrapper/configserver/start.go b/client/go/internal/admin/vespa-wrapper/configserver/start.go
index 7563132ff5a..7e641c0d8ac 100644
--- a/client/go/internal/admin/vespa-wrapper/configserver/start.go
+++ b/client/go/internal/admin/vespa-wrapper/configserver/start.go
@@ -70,8 +70,11 @@ func runConfigserverWithRunserver() int {
ServiceName: SERVICE_NAME,
Args: []string{"just-start-configserver"},
}
- rs.Exec("libexec/vespa/vespa-wrapper")
- return 1
+ if rs.WouldRun() {
+ rs.Exec("libexec/vespa/vespa-wrapper")
+ return 1
+ }
+ return 0
}
func StartConfigserverEtc() int {
diff --git a/client/go/internal/osutil/run_cmd.go b/client/go/internal/osutil/run_cmd.go
index ca0d621f9f9..3847dcc912a 100644
--- a/client/go/internal/osutil/run_cmd.go
+++ b/client/go/internal/osutil/run_cmd.go
@@ -5,9 +5,11 @@ package osutil
import (
"bytes"
+ "fmt"
"os"
"os/exec"
"strings"
+ "syscall"
"github.com/vespa-engine/vespa/client/go/internal/admin/trace"
)
@@ -21,6 +23,26 @@ const (
SystemCommand
)
+func analyzeError(err error) string {
+ exitErr, wasEe := err.(*exec.ExitError)
+ if !wasEe {
+ return ""
+ }
+ status, wasWs := exitErr.ProcessState.Sys().(syscall.WaitStatus)
+ if !wasWs {
+ return err.Error()
+ }
+ if !status.Signaled() {
+ return ""
+ }
+ msg := "died with signal: " + status.Signal().String()
+ switch status.Signal() {
+ case syscall.SIGILL:
+ msg = msg + " (you probably have an older CPU than required)"
+ }
+ return msg
+}
+
func (b BackTicks) Run(program string, args ...string) (string, error) {
cmd := exec.Command(program, args...)
var out bytes.Buffer
@@ -38,5 +60,8 @@ func (b BackTicks) Run(program string, args ...string) (string, error) {
}
trace.Debug("running command:", program, strings.Join(args, " "))
err := cmd.Run()
+ if extraMsg := analyzeError(err); extraMsg != "" {
+ fmt.Fprintln(os.Stderr, "Problem running program", program, "=>", extraMsg)
+ }
return out.String(), err
}