aboutsummaryrefslogtreecommitdiffstats
path: root/client/go/internal/admin/vespa-wrapper/services/start.go
diff options
context:
space:
mode:
Diffstat (limited to 'client/go/internal/admin/vespa-wrapper/services/start.go')
-rw-r--r--client/go/internal/admin/vespa-wrapper/services/start.go69
1 files changed, 69 insertions, 0 deletions
diff --git a/client/go/internal/admin/vespa-wrapper/services/start.go b/client/go/internal/admin/vespa-wrapper/services/start.go
new file mode 100644
index 00000000000..f47d99714f1
--- /dev/null
+++ b/client/go/internal/admin/vespa-wrapper/services/start.go
@@ -0,0 +1,69 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Author: arnej
+
+package services
+
+import (
+ "fmt"
+ "os"
+ "strings"
+
+ "github.com/vespa-engine/vespa/client/go/internal/admin/envvars"
+ "github.com/vespa-engine/vespa/client/go/internal/admin/trace"
+ "github.com/vespa-engine/vespa/client/go/internal/util"
+ "github.com/vespa-engine/vespa/client/go/internal/vespa"
+)
+
+func StartServices() int {
+ veHome, _ := commonPreChecks()
+ vespa.CheckCorrectUser()
+ trace.Debug("running as correct user")
+ exportSettings(veHome)
+ if vespa.HasOnlyIpV6() {
+ os.Setenv(envvars.VESPA_ONLY_IP_V6_NETWORKING, "true")
+ }
+ startProxyWithRunserver()
+ if waitForProxyResponse() {
+ startSentinelWithRunserver()
+ if waitForSentinelPid() {
+ return 0
+ }
+ }
+ return 1
+}
+
+func checkjava() {
+ backticks := util.BackTicksWithStderr
+ out, err := backticks.Run("java", "-version")
+ if err != nil {
+ trace.Warning("cannot run 'java -version'")
+ util.JustExitWith(err)
+ }
+ if !strings.Contains(out, "64-Bit Server VM") {
+ util.JustExitWith(fmt.Errorf("java must invoke the 64-bit Java VM, but -version says:\n%s\n", out))
+ }
+}
+
+func runvalidation() {
+ // not implemented
+}
+
+func VespaStartServices() int {
+ home, host := commonPreChecks()
+ trace.Debug("common prechecks ok, running in", home, "on", host)
+ vespa.RunPreStart()
+ trace.Debug("prestart ok")
+ util.TuneResourceLimits()
+ trace.Debug("resource limits ok")
+ checkjava()
+ trace.Debug("java ok")
+ runvalidation()
+ enable_transparent_hugepages_with_background_compaction()
+ disable_vm_zone_reclaim_mode()
+ drop_caches()
+ err := vespa.MaybeSwitchUser("start-services")
+ if err != nil {
+ util.JustExitWith(err)
+ }
+ return StartServices()
+}