summaryrefslogtreecommitdiffstats
path: root/client/go
diff options
context:
space:
mode:
authorArne Juul <arnej@yahooinc.com>2022-09-29 08:37:56 +0000
committerArne Juul <arnej@yahooinc.com>2022-09-29 08:42:08 +0000
commit6a1da6ee3568b6473373d837b70761593958094a (patch)
tree77c222003f1c62bf84770e141a34923b6cdf07e2 /client/go
parent076e14dae6f986f88d5cef8f01d5c969344a2538 (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.go45
-rw-r--r--client/go/script-utils/startcbinary/numactl.go5
-rw-r--r--client/go/script-utils/startcbinary/progspec.go12
-rw-r--r--client/go/script-utils/startcbinary/valgrind.go6
-rw-r--r--client/go/script-utils/startcbinary/vespamalloc.go9
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
}