summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2022-10-21 09:50:53 +0200
committerHarald Musum <musum@yahooinc.com>2022-10-21 09:50:53 +0200
commit2bd351f58044c4a0418116d5c3418ef1c3bd25d0 (patch)
tree6592b2190642c48a1e74db55681610166823cad8 /config-model
parentdc5769508b3ad653edcb4431b9d0c25271c36778 (diff)
Change to return optional of String
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java8
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/ConfigSentinel.java8
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/Logd.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/Service.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/Logserver.java6
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/VespaServicesConfigGenerator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidator.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/Container.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/Distributor.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/StorageNode.java11
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java4
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidatorTest.java5
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/SimpleService.java3
15 files changed, 41 insertions, 36 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java b/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java
index 063f4be758f..ed751ef246e 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java
@@ -222,13 +222,11 @@ public abstract class AbstractService extends AbstractConfigProducer<AbstractCon
/**
* Must be overridden by services that should be started by
* config-sentinel. The returned value will be used in
- * config-sentinel configuration. Returns null by default.
+ * config-sentinel configuration. Returns empty by default.
*
- * @return null by default.
+ * @return empty by default.
*/
- public String getStartupCommand() {
- return null;
- }
+ public Optional<String> getStartupCommand() { return Optional.empty(); }
public Optional<String> getPreShutdownCommand() {
return Optional.empty();
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/ConfigSentinel.java b/config-model/src/main/java/com/yahoo/vespa/model/ConfigSentinel.java
index d3fad2d94d1..43b59abd5b5 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/ConfigSentinel.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/ConfigSentinel.java
@@ -77,9 +77,7 @@ public class ConfigSentinel extends AbstractService implements SentinelConfig.Pr
builder.application(getApplicationConfig());
builder.ignoreRequestedStackSizes(ignoreRequestedStackSizes);
for (Service s : getHostResource().getServices()) {
- if (s.getStartupCommand() != null) {
- builder.service(getServiceConfig(s));
- }
+ s.getStartupCommand().ifPresent(command -> builder.service(getServiceConfig(s, command)));
}
}
@@ -93,9 +91,9 @@ public class ConfigSentinel extends AbstractService implements SentinelConfig.Pr
return builder;
}
- private SentinelConfig.Service.Builder getServiceConfig(Service s) {
+ private SentinelConfig.Service.Builder getServiceConfig(Service s, String startupCommand) {
SentinelConfig.Service.Builder serviceBuilder = new SentinelConfig.Service.Builder();
- serviceBuilder.command(s.getStartupCommand());
+ serviceBuilder.command(startupCommand);
serviceBuilder.name(s.getServiceName());
serviceBuilder.id(s.getConfigId());
serviceBuilder.affinity(getServiceAffinity(s));
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/Logd.java b/config-model/src/main/java/com/yahoo/vespa/model/Logd.java
index 2334501ee6a..dc0bcd27d57 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/Logd.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/Logd.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.model;
import com.yahoo.cloud.config.log.LogdConfig;
+import java.util.Optional;
/**
* There is one logd running on each Vespa host, and one instance of
@@ -45,7 +46,8 @@ public class Logd
/**
* @return The command used to start logd
*/
- public String getStartupCommand() { return "exec sbin/vespa-logd"; }
+ @Override
+ public Optional<String> getStartupCommand() { return Optional.of("exec sbin/vespa-logd"); }
@Override
public int getHealthPort() { return getRelativePort(0); }
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/Service.java b/config-model/src/main/java/com/yahoo/vespa/model/Service.java
index 87fd8078c3f..f529b22cc45 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/Service.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/Service.java
@@ -16,11 +16,10 @@ public interface Service extends ConfigProducer, NetworkPortRequestor {
/**
* Services that should be started by config-sentinel must return
- * non-null. The returned value will be used in config-sentinel
+ * a non-empty value. The returned value will be used in config-sentinel
* configuration.
- * TODO: Should change this to Optional of String
*/
- String getStartupCommand();
+ Optional<String> getStartupCommand();
// environment variables specific for this service:
Map<String, Object> getEnvVars();
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java
index abb86f4d1ca..5fc0efb4044 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java
@@ -66,7 +66,8 @@ public class LogForwarder extends AbstractService implements LogforwarderConfig.
/**
* @return The command used to start LogForwarder
*/
- public String getStartupCommand() { return "exec $ROOT/bin/vespa-logforwarder-start -c " + getConfigId(); }
+ @Override
+ public Optional<String> getStartupCommand() { return Optional.of("exec $ROOT/bin/vespa-logforwarder-start -c " + getConfigId()); }
@Override
public void getConfig(LogforwarderConfig.Builder builder) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/Logserver.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/Logserver.java
index 6f0e5a775e9..73447eea4a1 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/Logserver.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/Logserver.java
@@ -5,6 +5,7 @@ import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.vespa.model.AbstractService;
import com.yahoo.vespa.model.PortAllocBridge;
+import java.util.Optional;
/**
* Represents the Logserver. There is exactly one logserver in a Vespa system.
@@ -37,8 +38,9 @@ public class Logserver extends AbstractService {
/**
* @return the startup command for the logserver
*/
- public String getStartupCommand() {
- return "exec $ROOT/bin/vespa-logserver-start " + getMyJVMArgs() + " " + getJvmOptions();
+ @Override
+ public Optional<String> getStartupCommand() {
+ return Optional.of("exec $ROOT/bin/vespa-logserver-start " + getMyJVMArgs() + " " + getJvmOptions());
}
/** Returns the jvm args to be used by the logserver. */
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java
index 899f97f48e8..5567fc330d6 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/Slobrok.java
@@ -6,6 +6,7 @@ import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.vespa.config.core.StateserverConfig;
import com.yahoo.vespa.model.AbstractService;
import com.yahoo.vespa.model.PortAllocBridge;
+import java.util.Optional;
/**
* Represents a Slobrok service.
@@ -47,8 +48,8 @@ public class Slobrok extends AbstractService implements StateserverConfig.Produc
}
}
- public String getStartupCommand() {
- return "exec $ROOT/sbin/vespa-slobrok -N -p " + getRpcPort() + " -c " + getConfigId();
+ public Optional<String> getStartupCommand() {
+ return Optional.of("exec $ROOT/sbin/vespa-slobrok -N -p " + getRpcPort() + " -c " + getConfigId());
}
@Override
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/VespaServicesConfigGenerator.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/VespaServicesConfigGenerator.java
index b4972e55ae9..93ff9f8963c 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/VespaServicesConfigGenerator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/VespaServicesConfigGenerator.java
@@ -21,7 +21,7 @@ public class VespaServicesConfigGenerator {
}
private static boolean doIncludeServiceMetrics(Service s) {
- return s.getStartupCommand() != null || s.getServiceType().equals("configserver") || s.getServiceType().equals("config-sentinel");
+ return s.getStartupCommand().isPresent() || s.getServiceType().equals("configserver") || s.getServiceType().equals("config-sentinel");
}
private static VespaServicesConfig.Service.Builder toServiceBuilder(Service service) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidator.java
index 59b2af0835f..6b5ae4d4c5c 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidator.java
@@ -39,8 +39,8 @@ public class StartupCommandChangeValidator implements ChangeValidator {
}
private Optional<ConfigChangeAction> compareStartupCommand(Service currentService, Service nextService) {
- String currentCommand = currentService.getStartupCommand();
- String nextCommand = nextService.getStartupCommand();
+ String currentCommand = currentService.getStartupCommand().orElse("");
+ String nextCommand = nextService.getStartupCommand().orElse("");
if (Objects.equals(currentCommand, nextCommand)) return Optional.empty();
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java b/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java
index 3f01ac6a103..9be5300094a 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java
@@ -298,8 +298,8 @@ public abstract class Container extends AbstractService implements
}
}
- public String getStartupCommand() {
- return "PRELOAD=" + getPreLoad() + " exec vespa-start-container-daemon " + getJvmOptions() + " ";
+ public Optional<String> getStartupCommand() {
+ return Optional.of("PRELOAD=" + getPreLoad() + " exec vespa-start-container-daemon " + getJvmOptions() + " ");
}
@Override
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/Distributor.java b/config-model/src/main/java/com/yahoo/vespa/model/content/Distributor.java
index b4c48b3204b..921d49abc07 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/Distributor.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/Distributor.java
@@ -10,6 +10,7 @@ import com.yahoo.vespa.model.builder.xml.dom.ModelElement;
import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder;
import com.yahoo.vespa.model.content.engines.PersistenceEngine;
import org.w3c.dom.Element;
+import java.util.Optional;
/**
* Represents specific configuration for a given distributor node.
@@ -75,8 +76,8 @@ public class Distributor extends ContentNode implements StorDistributormanagerCo
}
@Override
- public String getStartupCommand() {
- return "exec sbin/vespa-distributord -c $VESPA_CONFIG_ID";
+ public Optional<String> getStartupCommand() {
+ return Optional.of("exec sbin/vespa-distributord -c $VESPA_CONFIG_ID");
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/StorageNode.java b/config-model/src/main/java/com/yahoo/vespa/model/content/StorageNode.java
index af103d4d5b9..8b4a7451eb1 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/StorageNode.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/StorageNode.java
@@ -15,6 +15,7 @@ import com.yahoo.vespa.model.content.engines.PersistenceEngine;
import com.yahoo.vespa.model.content.engines.ProtonProvider;
import com.yahoo.vespa.model.content.storagecluster.StorageCluster;
import org.w3c.dom.Element;
+import java.util.Optional;
/**
* Class to provide config related to a specific storage node.
@@ -48,10 +49,10 @@ public class StorageNode extends ContentNode implements StorServerConfig.Produce
}
@Override
- public String getStartupCommand() {
+ public Optional<String> getStartupCommand() {
return isProviderProton()
- ? null
- : "exec sbin/vespa-storaged -c $VESPA_CONFIG_ID";
+ ? Optional.empty()
+ : Optional.of("exec sbin/vespa-storaged -c $VESPA_CONFIG_ID");
}
public double getCapacity() {
@@ -66,7 +67,7 @@ public class StorageNode extends ContentNode implements StorServerConfig.Produce
public boolean isRetired() { return retired; }
private boolean isProviderProton() {
- for (AbstractConfigProducer producer : getChildren().values()) {
+ for (AbstractConfigProducer<?> producer : getChildren().values()) {
if (producer instanceof ProtonProvider) {
return true;
}
@@ -80,7 +81,7 @@ public class StorageNode extends ContentNode implements StorServerConfig.Produce
builder.node_capacity(getCapacity());
- for (AbstractConfigProducer producer : getChildren().values()) {
+ for (AbstractConfigProducer<?> producer : getChildren().values()) {
((PersistenceEngine)producer).getConfig(builder);
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java
index 2b2706cbfca..2a211d0e1ce 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java
@@ -240,12 +240,12 @@ public class SearchNode extends AbstractService implements
}
@Override
- public String getStartupCommand() {
+ public Optional<String> getStartupCommand() {
String startup = "exec $ROOT/sbin/vespa-proton --identity " + getConfigId();
if (serviceLayerService != null) {
startup = startup + " --serviceidentity " + serviceLayerService.getConfigId();
}
- return startup;
+ return Optional.of(startup);
}
@Override
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidatorTest.java
index 8d542ce85f3..827aee42b0e 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidatorTest.java
@@ -13,6 +13,7 @@ import org.junit.jupiter.api.Test;
import java.util.Arrays;
import java.util.List;
+import java.util.Optional;
import java.util.stream.Collectors;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -68,8 +69,8 @@ public class StartupCommandChangeValidatorTest {
}
@Override
- public String getStartupCommand() {
- return startupCommand;
+ public Optional<String> getStartupCommand() {
+ return Optional.ofNullable(startupCommand);
}
@Override
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/SimpleService.java b/config-model/src/test/java/com/yahoo/vespa/model/test/SimpleService.java
index 0788a794214..e98b4f80ce3 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/SimpleService.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/SimpleService.java
@@ -7,6 +7,7 @@ import com.yahoo.vespa.model.AbstractService;
import com.yahoo.vespa.model.PortAllocBridge;
import java.util.HashMap;
+import java.util.Optional;
/**
* This service has a desired default port and returns the actual
@@ -50,7 +51,7 @@ public class SimpleService extends AbstractService implements com.yahoo.test.Sta
}
// Make sure this service is listed in the sentinel config
- public String getStartupCommand() { return "sleep 0"; }
+ public Optional<String> getStartupCommand() { return Optional.of("sleep 0"); }
@Override
public HashMap<String,String> getDefaultMetricDimensions(){