From 754fe3a358eb4e83f632432324246863a2f4b7ba Mon Sep 17 00:00:00 2001 From: Arne Juul Date: Mon, 14 Nov 2022 13:03:05 +0000 Subject: add some info logging about container startup --- client/go/jvm/container.go | 16 +++++++++++++++- client/go/jvm/env.go | 2 +- client/go/prog/spec_env.go | 35 +++++++++++++++++------------------ client/go/trace/trace.go | 19 ++++++++----------- 4 files changed, 41 insertions(+), 31 deletions(-) (limited to 'client') diff --git a/client/go/jvm/container.go b/client/go/jvm/container.go index ac10f775859..384384da137 100644 --- a/client/go/jvm/container.go +++ b/client/go/jvm/container.go @@ -4,7 +4,11 @@ package jvm import ( + "fmt" + "strings" + "github.com/vespa-engine/vespa/client/go/prog" + "github.com/vespa-engine/vespa/client/go/trace" "github.com/vespa-engine/vespa/client/go/util" ) @@ -34,6 +38,14 @@ func (cb *containerBase) ConfigId() string { return cb.configId } +func readableEnv(env map[string]string) string { + var buf strings.Builder + for k, v := range env { + fmt.Fprintf(&buf, " %s=%s", k, v) + } + return buf.String() +} + func (cb *containerBase) Exec() { argv := make([]string, 0, 100) argv = append(argv, "java") @@ -42,7 +54,9 @@ func (cb *containerBase) Exec() { } p := prog.NewSpec(argv) p.ConfigureNumaCtl() - exportEnvSettings(cb, p) + cb.exportEnvSettings(p) + trace.Info("starting container; env:", readableEnv(p.Env)) + trace.Info("starting container; exec:", argv) err := p.Run() util.JustExitWith(err) } diff --git a/client/go/jvm/env.go b/client/go/jvm/env.go index 5157847fb86..3db0cfd17b4 100644 --- a/client/go/jvm/env.go +++ b/client/go/jvm/env.go @@ -26,7 +26,7 @@ const ( MALLOC_ARENA_MAX = util.ENV_MALLOC_ARENA_MAX ) -func exportEnvSettings(c *containerBase, ps *prog.Spec) { +func (c *containerBase) exportEnvSettings(ps *prog.Spec) { vespaHome := defaults.VespaHome() vlt := fmt.Sprintf("file:%s/logs/vespa/vespa.log", vespaHome) lcd := fmt.Sprintf("%s/var/db/vespa/logcontrol", vespaHome) diff --git a/client/go/prog/spec_env.go b/client/go/prog/spec_env.go index 498931fe92c..ffdafe7676b 100644 --- a/client/go/prog/spec_env.go +++ b/client/go/prog/spec_env.go @@ -22,31 +22,30 @@ func (p *Spec) Getenv(k string) string { } func (spec *Spec) effectiveEnv() []string { - env := make(map[string]string) - for _, entry := range os.Environ() { - addInMap := func(kv string) bool { - for idx, elem := range kv { - if elem == '=' { - k := kv[:idx] - env[k] = kv - return true - } + envMap := make(map[string]string) + addToMap := func(kv string) { + for idx, elem := range kv { + if elem == '=' { + k := kv[:idx] + envMap[k] = kv + return } - return false - } - if !addInMap(entry) { - env[entry] = "" } + trace.Trace("invalid entry in os.Environ():", kv) + envMap[kv] = kv + } + for _, entry := range os.Environ() { + addToMap(entry) } for k, v := range spec.Env { trace.Trace("add to environment:", k, "=", v) - env[k] = k + "=" + v + envMap[k] = k + "=" + v } - envv := make([]string, 0, len(env)) - for _, v := range env { - envv = append(envv, v) + envVec := make([]string, 0, len(envMap)) + for _, val := range envMap { + envVec = append(envVec, val) } - return envv + return envVec } func (spec *Spec) considerFallback(varName, varValue string) { diff --git a/client/go/trace/trace.go b/client/go/trace/trace.go index cedd1bcf597..9f642b79562 100644 --- a/client/go/trace/trace.go +++ b/client/go/trace/trace.go @@ -31,30 +31,27 @@ func Silent() { currentOutputLevel = levelNone } -func outputStderr(l outputLevel, n string, v ...interface{}) { +func outputTracing(l outputLevel, n string, v ...interface{}) { if l > currentOutputLevel { return } - w := make([]interface{}, len(v)+1) - w[0] = n - for idx, arg := range v { - w[idx+1] = arg - } - fmt.Fprintln(os.Stderr, w...) + out := os.Stderr + fmt.Fprintf(out, "%s\t", n) + fmt.Fprintln(out, v...) } func Info(v ...interface{}) { - outputStderr(levelInfo, "[info]", v...) + outputTracing(levelInfo, "info", v...) } func Trace(v ...interface{}) { - outputStderr(levelTrace, "[trace]", v...) + outputTracing(levelTrace, "info", v...) } func Debug(v ...interface{}) { - outputStderr(levelDebug, "[debug]", v...) + outputTracing(levelDebug, "debug", v...) } func Warning(v ...interface{}) { - outputStderr(levelWarning, "[warning]", v...) + outputTracing(levelWarning, "warning", v...) } -- cgit v1.2.3