diff options
author | HÃ¥kon Hallingstad <hakon.hallingstad@gmail.com> | 2022-10-04 15:40:34 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-04 15:40:34 +0200 |
commit | 90d17790473d3de2583b4e60b7e31f986d7bb9a2 (patch) | |
tree | 075b162432b997e8d101b6c5b43f6b49b65bcc1e /configserver/src/main/java/com | |
parent | be9a71252c4ba1707a1c99ee1ebffe6a9a209ea9 (diff) | |
parent | f93f1d7ab02508059500d32394c97f1df3f09118 (diff) |
Merge pull request #24298 from vespa-engine/hmusum/refactor-bootstrap
Hmusum/refactor bootstrap [run-systemtest]
Diffstat (limited to 'configserver/src/main/java/com')
2 files changed, 22 insertions, 56 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/ConfigServerBootstrap.java b/configserver/src/main/java/com/yahoo/vespa/config/server/ConfigServerBootstrap.java index f76c7939d8d..5eb0f830ef6 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/ConfigServerBootstrap.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/ConfigServerBootstrap.java @@ -1,27 +1,23 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.config.server; -import com.yahoo.component.annotation.Inject; import com.yahoo.cloud.config.ConfigserverConfig; import com.yahoo.component.AbstractComponent; +import com.yahoo.component.annotation.Inject; import com.yahoo.concurrent.DaemonThreadFactory; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.Deployment; import com.yahoo.config.provision.TransientException; import com.yahoo.container.handler.VipStatus; import com.yahoo.container.jdisc.state.StateMonitor; -import com.yahoo.vespa.config.server.application.ConfigConvergenceChecker; import com.yahoo.vespa.config.server.maintenance.ConfigServerMaintenance; import com.yahoo.vespa.config.server.rpc.RpcServer; import com.yahoo.vespa.config.server.version.VersionState; -import com.yahoo.vespa.flags.FlagSource; import com.yahoo.yolean.Exceptions; - import java.time.Clock; import java.time.Duration; import java.time.Instant; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashSet; @@ -37,9 +33,6 @@ import java.util.concurrent.TimeoutException; import java.util.logging.Level; import java.util.logging.Logger; -import static com.yahoo.vespa.config.server.ConfigServerBootstrap.Mode.BOOTSTRAP_IN_CONSTRUCTOR; -import static com.yahoo.vespa.config.server.ConfigServerBootstrap.Mode.FOR_TESTING_NO_BOOTSTRAP_OF_APPS; -import static com.yahoo.vespa.config.server.ConfigServerBootstrap.RedeployingApplicationsFails.CONTINUE; import static com.yahoo.vespa.config.server.ConfigServerBootstrap.RedeployingApplicationsFails.EXIT_JVM; /** @@ -59,7 +52,6 @@ public class ConfigServerBootstrap extends AbstractComponent implements Runnable private static final Logger log = Logger.getLogger(ConfigServerBootstrap.class.getName()); - enum Mode { BOOTSTRAP_IN_CONSTRUCTOR, FOR_TESTING_NO_BOOTSTRAP_OF_APPS} enum RedeployingApplicationsFails { EXIT_JVM, CONTINUE } enum VipStatusMode { VIP_STATUS_FILE, VIP_STATUS_PROGRAMMATICALLY } @@ -79,28 +71,14 @@ public class ConfigServerBootstrap extends AbstractComponent implements Runnable @SuppressWarnings("unused") // Injected component @Inject public ConfigServerBootstrap(ApplicationRepository applicationRepository, RpcServer server, - VersionState versionState, StateMonitor stateMonitor, VipStatus vipStatus, - FlagSource flagSource, ConfigConvergenceChecker convergence) { - this(applicationRepository, server, versionState, stateMonitor, vipStatus, BOOTSTRAP_IN_CONSTRUCTOR, EXIT_JVM, - applicationRepository.configserverConfig().hostedVespa() - ? VipStatusMode.VIP_STATUS_FILE - : VipStatusMode.VIP_STATUS_PROGRAMMATICALLY, - flagSource, convergence, Clock.systemUTC()); + VersionState versionState, StateMonitor stateMonitor, VipStatus vipStatus) { + this(applicationRepository, server, versionState, stateMonitor, vipStatus, EXIT_JVM, vipStatusMode(applicationRepository)); } - // For testing only - ConfigServerBootstrap(ApplicationRepository applicationRepository, RpcServer server, VersionState versionState, - StateMonitor stateMonitor, VipStatus vipStatus, VipStatusMode vipStatusMode, - FlagSource flagSource, ConfigConvergenceChecker convergence, Clock clock) { - this(applicationRepository, server, versionState, stateMonitor, vipStatus, - FOR_TESTING_NO_BOOTSTRAP_OF_APPS, CONTINUE, vipStatusMode, flagSource, convergence, clock); - } - - private ConfigServerBootstrap(ApplicationRepository applicationRepository, RpcServer server, - VersionState versionState, StateMonitor stateMonitor, VipStatus vipStatus, - Mode mode, RedeployingApplicationsFails exitIfRedeployingApplicationsFails, - VipStatusMode vipStatusMode, FlagSource flagSource, ConfigConvergenceChecker convergence, - Clock clock) { + protected ConfigServerBootstrap(ApplicationRepository applicationRepository, RpcServer server, + VersionState versionState, StateMonitor stateMonitor, VipStatus vipStatus, + RedeployingApplicationsFails exitIfRedeployingApplicationsFails, + VipStatusMode vipStatusMode) { this.applicationRepository = applicationRepository; this.server = server; this.versionState = versionState; @@ -110,27 +88,13 @@ public class ConfigServerBootstrap extends AbstractComponent implements Runnable this.maxDurationOfRedeployment = Duration.ofSeconds(configserverConfig.maxDurationOfBootstrap()); this.sleepTimeWhenRedeployingFails = Duration.ofSeconds(configserverConfig.sleepTimeWhenRedeployingFails()); this.exitIfRedeployingApplicationsFails = exitIfRedeployingApplicationsFails; - this.clock = clock; + this.clock = applicationRepository.clock(); rpcServerExecutor = Executors.newSingleThreadExecutor(new DaemonThreadFactory("config server RPC server")); - - configServerMaintenance = new ConfigServerMaintenance(configserverConfig, - applicationRepository, - applicationRepository.tenantRepository().getCurator(), - flagSource, - convergence); + configServerMaintenance = new ConfigServerMaintenance(applicationRepository); configServerMaintenance.startBeforeBootstrap(); - log.log(Level.FINE, () -> "Bootstrap mode: " + mode + ", VIP status mode: " + vipStatusMode); + log.log(Level.FINE, () -> "VIP status mode: " + vipStatusMode); initializing(vipStatusMode); - - switch (mode) { - case BOOTSTRAP_IN_CONSTRUCTOR: - start(); - break; - case FOR_TESTING_NO_BOOTSTRAP_OF_APPS: - break; - default: - throw new IllegalArgumentException("Unknown bootstrap mode " + mode + ", legal values: " + Arrays.toString(Mode.values())); - } + start(); } @Override @@ -325,6 +289,12 @@ public class ConfigServerBootstrap extends AbstractComponent implements Runnable } } + private static VipStatusMode vipStatusMode(ApplicationRepository applicationRepository) { + return applicationRepository.configserverConfig().hostedVespa() + ? VipStatusMode.VIP_STATUS_FILE + : VipStatusMode.VIP_STATUS_PROGRAMMATICALLY; + } + private static class LogState { private final int applicationCount; diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintenance.java b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintenance.java index a6516ac361b..a4cc11bd22e 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintenance.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintenance.java @@ -31,16 +31,12 @@ public class ConfigServerMaintenance { private final FlagSource flagSource; private final ConfigConvergenceChecker convergenceChecker; - public ConfigServerMaintenance(ConfigserverConfig configserverConfig, - ApplicationRepository applicationRepository, - Curator curator, - FlagSource flagSource, - ConfigConvergenceChecker convergenceChecker) { - this.configserverConfig = configserverConfig; + public ConfigServerMaintenance(ApplicationRepository applicationRepository) { + this.configserverConfig = applicationRepository.configserverConfig(); this.applicationRepository = applicationRepository; - this.curator = curator; - this.flagSource = flagSource; - this.convergenceChecker = convergenceChecker; + this.curator = applicationRepository.tenantRepository().getCurator(); + this.flagSource = applicationRepository.flagSource(); + this.convergenceChecker = applicationRepository.configConvergenceChecker(); } public void startBeforeBootstrap() { |