diff options
author | Arne Juul <arnej@yahooinc.com> | 2022-09-29 08:37:56 +0000 |
---|---|---|
committer | Arne Juul <arnej@yahooinc.com> | 2022-09-29 08:42:08 +0000 |
commit | 6a1da6ee3568b6473373d837b70761593958094a (patch) | |
tree | 77c222003f1c62bf84770e141a34923b6cdf07e2 /client/go | |
parent | 076e14dae6f986f88d5cef8f01d5c969344a2538 (diff) |
more compatibility
* refactor setting of environment variables
* and add some more common env vars
* check and/or set some old (compatibiliy) variables
Diffstat (limited to 'client/go')
-rw-r--r-- | client/go/script-utils/startcbinary/common_env.go | 45 | ||||
-rw-r--r-- | client/go/script-utils/startcbinary/numactl.go | 5 | ||||
-rw-r--r-- | client/go/script-utils/startcbinary/progspec.go | 12 | ||||
-rw-r--r-- | client/go/script-utils/startcbinary/valgrind.go | 6 | ||||
-rw-r--r-- | client/go/script-utils/startcbinary/vespamalloc.go | 9 |
5 files changed, 62 insertions, 15 deletions
diff --git a/client/go/script-utils/startcbinary/common_env.go b/client/go/script-utils/startcbinary/common_env.go index 908c61bb468..0bd73d74cd4 100644 --- a/client/go/script-utils/startcbinary/common_env.go +++ b/client/go/script-utils/startcbinary/common_env.go @@ -5,8 +5,10 @@ package startcbinary import ( "os" + "strings" "github.com/vespa-engine/vespa/client/go/trace" + "github.com/vespa-engine/vespa/client/go/vespa" ) const ( @@ -24,15 +26,58 @@ const ( ENV_VESPA_USE_MADVISE_LIST = "VESPA_USE_MADVISE_LIST" ENV_VESPA_USE_NO_VESPAMALLOC = "VESPA_USE_NO_VESPAMALLOC" ENV_VESPA_USE_VALGRIND = "VESPA_USE_VALGRIND" + ENV_VESPA_USE_VESPAMALLOC = "VESPA_USE_VESPAMALLOC" ENV_VESPA_USE_VESPAMALLOC_D = "VESPA_USE_VESPAMALLOC_D" ENV_VESPA_USE_VESPAMALLOC_DST = "VESPA_USE_VESPAMALLOC_DST" ENV_VESPA_VALGRIND_OPT = "VESPA_VALGRIND_OPT" + ENV_VESPA_USER = "VESPA_USER" + + // backwards compatibility variables: + ENV_ROOT = "ROOT" + ENV_HUGEPAGES_LIST = "HUGEPAGES_LIST" + ENV_MADVISE_LIST = "MADVISE_LIST" + ENV_NO_VESPAMALLOC_LIST = "NO_VESPAMALLOC_LIST" + ENV_VESPAMALLOC_LIST = "VESPAMALLOCD_LIST" + ENV_VESPAMALLOCD_LIST = "VESPAMALLOCD_LIST" + ENV_VESPAMALLOCDST_LIST = "VESPAMALLOCDST_LIST" ) +func (spec *ProgSpec) considerFallback(varName, varValue string) { + if spec.getenv(varName) == "" && varValue != "" { + spec.setenv(varName, varValue) + } +} + +func (spec *ProgSpec) considerEnvFallback(targetVar, fallbackVar string) { + spec.considerFallback(targetVar, spec.getenv(fallbackVar)) +} + func (spec *ProgSpec) configureCommonEnv() { os.Unsetenv(ENV_LD_PRELOAD) spec.setenv(ENV_STD_THREAD_PREVENT_TRY_CATCH, "true") spec.setenv(ENV_GLIBCXX_FORCE_NEW, "1") + // fallback from old env.vars: + spec.considerEnvFallback(ENV_VESPA_USE_HUGEPAGES_LIST, ENV_HUGEPAGES_LIST) + spec.considerEnvFallback(ENV_VESPA_USE_MADVISE_LIST, ENV_MADVISE_LIST) + spec.considerEnvFallback(ENV_VESPA_USE_VESPAMALLOC, ENV_VESPAMALLOC_LIST) + spec.considerEnvFallback(ENV_VESPA_USE_VESPAMALLOC_D, ENV_VESPAMALLOCD_LIST) + spec.considerEnvFallback(ENV_VESPA_USE_VESPAMALLOC_DST, ENV_VESPAMALLOCDST_LIST) + spec.considerEnvFallback(ENV_VESPA_USE_NO_VESPAMALLOC, ENV_NO_VESPAMALLOC_LIST) + // other fallbacks: + spec.considerFallback(ENV_ROOT, vespa.FindHome()) + spec.considerFallback(ENV_VESPA_USER, vespa.FindVespaUser()) + spec.considerFallback(ENV_VESPA_USE_HUGEPAGES_LIST, "all") + spec.considerFallback(ENV_VESPA_USE_VESPAMALLOC, "all") + spec.considerFallback(ENV_VESPA_USE_NO_VESPAMALLOC, strings.Join([]string{ + "vespa-rpc-invoke", + "vespa-get-config", + "vespa-sentinel-cmd", + "vespa-route", + "vespa-proton-cmd", + "vespa-configproxy-cmd", + "vespa-config-status", + }, " ")) + } func (spec *ProgSpec) configureHugePages() { diff --git a/client/go/script-utils/startcbinary/numactl.go b/client/go/script-utils/startcbinary/numactl.go index 6f49d8b8d9f..bc34193da59 100644 --- a/client/go/script-utils/startcbinary/numactl.go +++ b/client/go/script-utils/startcbinary/numactl.go @@ -5,7 +5,6 @@ package startcbinary import ( "fmt" - "os" "strconv" "strings" @@ -16,7 +15,7 @@ import ( func (p *ProgSpec) configureNumaCtl() { p.shouldUseNumaCtl = false p.numaSocket = -1 - if os.Getenv(ENV_VESPA_NO_NUMACTL) != "" { + if p.getenv(ENV_VESPA_NO_NUMACTL) != "" { return } backticks := util.BackTicksIgnoreStderr @@ -36,7 +35,7 @@ func (p *ProgSpec) configureNumaCtl() { return } p.shouldUseNumaCtl = true - if affinity := os.Getenv(ENV_VESPA_AFFINITY_CPU_SOCKET); affinity != "" { + if affinity := p.getenv(ENV_VESPA_AFFINITY_CPU_SOCKET); affinity != "" { wantSocket, _ := strconv.Atoi(affinity) trace.Debug("want socket:", wantSocket) parts := strings.Fields(out) diff --git a/client/go/script-utils/startcbinary/progspec.go b/client/go/script-utils/startcbinary/progspec.go index 614764e09e8..6679a7e008f 100644 --- a/client/go/script-utils/startcbinary/progspec.go +++ b/client/go/script-utils/startcbinary/progspec.go @@ -39,8 +39,15 @@ func (p *ProgSpec) setenv(k, v string) { p.Env[k] = v } +func (p *ProgSpec) getenv(k string) string { + if v, ok := p.Env[k]; ok { + return v + } + return os.Getenv(k) +} + func (p *ProgSpec) matchesListEnv(envVarName string) bool { - return p.matchesListString(os.Getenv(envVarName)) + return p.matchesListString(p.getenv(envVarName)) } func (p *ProgSpec) matchesListString(env string) bool { @@ -60,11 +67,10 @@ func (p *ProgSpec) matchesListString(env string) bool { } func (p *ProgSpec) valueFromListEnv(envVarName string) string { - return p.valueFromListString(os.Getenv(envVarName)) + return p.valueFromListString(p.getenv(envVarName)) } func (p *ProgSpec) valueFromListString(env string) string { - parts := strings.Fields(env) for _, part := range parts { idx := strings.Index(part, "=") diff --git a/client/go/script-utils/startcbinary/valgrind.go b/client/go/script-utils/startcbinary/valgrind.go index fb47fa36e9b..0b49e1b3265 100644 --- a/client/go/script-utils/startcbinary/valgrind.go +++ b/client/go/script-utils/startcbinary/valgrind.go @@ -16,7 +16,7 @@ import ( func (p *ProgSpec) configureValgrind() { p.shouldUseValgrind = false p.shouldUseCallgrind = false - env := os.Getenv(ENV_VESPA_USE_VALGRIND) + env := p.getenv(ENV_VESPA_USE_VALGRIND) parts := strings.Split(env, " ") for _, part := range parts { if p.BaseName == part { @@ -27,7 +27,7 @@ func (p *ProgSpec) configureValgrind() { trace.Trace("no valgrind, 'which' fails:", err, "=>", out) return } - if opts := os.Getenv(ENV_VESPA_VALGRIND_OPT); strings.Contains(opts, "callgrind") { + if opts := p.getenv(ENV_VESPA_VALGRIND_OPT); strings.Contains(opts, "callgrind") { p.shouldUseCallgrind = true } p.shouldUseValgrind = true @@ -42,7 +42,7 @@ func (p *ProgSpec) valgrindBinary() string { } func (p *ProgSpec) valgrindOptions() []string { - env := os.Getenv(ENV_VESPA_VALGRIND_OPT) + env := p.getenv(ENV_VESPA_VALGRIND_OPT) if env != "" { return strings.Fields(env) } diff --git a/client/go/script-utils/startcbinary/vespamalloc.go b/client/go/script-utils/startcbinary/vespamalloc.go index 7105f4b5562..64a0fdd1fdd 100644 --- a/client/go/script-utils/startcbinary/vespamalloc.go +++ b/client/go/script-utils/startcbinary/vespamalloc.go @@ -5,7 +5,6 @@ package startcbinary import ( "fmt" - "os" "github.com/vespa-engine/vespa/client/go/trace" "github.com/vespa-engine/vespa/client/go/vespa" @@ -39,20 +38,18 @@ func (p *ProgSpec) configureVespaMalloc() { useFile = vespaMallocLib("libvespamallocdst16.so") } else if p.matchesListEnv(ENV_VESPA_USE_VESPAMALLOC_D) { useFile = vespaMallocLib("libvespamallocd.so") - } else { + } else if p.matchesListEnv(ENV_VESPA_USE_VESPAMALLOC) { useFile = vespaMallocLib("libvespamalloc.so") } trace.Trace("use file:", useFile) if useFile == "" { return } - if loadAsHuge := os.Getenv(ENV_VESPA_LOAD_CODE_AS_HUGEPAGES); loadAsHuge != "" { + if loadAsHuge := p.getenv(ENV_VESPA_LOAD_CODE_AS_HUGEPAGES); loadAsHuge != "" { otherFile := vespaMallocLib("libvespa_load_as_huge.so") useFile = fmt.Sprintf("%s:%s", useFile, otherFile) } - if useHugePages := os.Getenv(ENV_VESPA_USE_HUGEPAGES); useHugePages != "" { - p.setenv(ENV_VESPA_MALLOC_HUGEPAGES, useHugePages) - } + p.considerEnvFallback(ENV_VESPA_MALLOC_HUGEPAGES, ENV_VESPA_USE_HUGEPAGES) p.vespaMallocPreload = useFile p.shouldUseVespaMalloc = true } |