diff options
author | Harald Musum <musum@yahooinc.com> | 2022-10-21 09:50:53 +0200 |
---|---|---|
committer | Harald Musum <musum@yahooinc.com> | 2022-10-21 09:50:53 +0200 |
commit | 2bd351f58044c4a0418116d5c3418ef1c3bd25d0 (patch) | |
tree | 6592b2190642c48a1e74db55681610166823cad8 /config-model | |
parent | dc5769508b3ad653edcb4431b9d0c25271c36778 (diff) |
Change to return optional of String
Diffstat (limited to 'config-model')
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(){ |