aboutsummaryrefslogtreecommitdiffstats
path: root/configserver/src/main/java/com
diff options
context:
space:
mode:
authorHÃ¥kon Hallingstad <hakon.hallingstad@gmail.com>2022-10-04 15:40:34 +0200
committerGitHub <noreply@github.com>2022-10-04 15:40:34 +0200
commit90d17790473d3de2583b4e60b7e31f986d7bb9a2 (patch)
tree075b162432b997e8d101b6c5b43f6b49b65bcc1e /configserver/src/main/java/com
parentbe9a71252c4ba1707a1c99ee1ebffe6a9a209ea9 (diff)
parentf93f1d7ab02508059500d32394c97f1df3f09118 (diff)
Merge pull request #24298 from vespa-engine/hmusum/refactor-bootstrap
Hmusum/refactor bootstrap [run-systemtest]
Diffstat (limited to 'configserver/src/main/java/com')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/ConfigServerBootstrap.java64
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/maintenance/ConfigServerMaintenance.java14
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() {