summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/Flags.java6
-rw-r--r--node-admin/pom.xml6
-rw-r--r--node-repository/pom.xml6
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ConfigServerReconfigurer.java53
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintenance.java7
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ContainerConfig.java1
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockReconfigurer.java56
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ConfigServerReconfigurerTest.java90
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java15
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/maintenance.json3
-rw-r--r--zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java24
-rw-r--r--zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/ZooKeeperServer.java47
-rw-r--r--zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java14
13 files changed, 8 insertions, 320 deletions
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
index 4f2b60b839f..5e030014c83 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
@@ -273,12 +273,6 @@ public class Flags {
"Takes effect at redeployment",
ZONE_ID, APPLICATION_ID);
- public static final UnboundBooleanFlag DYNAMIC_CONFIG_SERVER_PROVISIONING = defineFeatureFlag(
- "dynamic-config-server-provisioning", false,
- List.of("mpolden"), "2021-02-26", "2021-05-01",
- "Enable dynamic provisioning of config servers",
- "Takes effect immediately");
-
/** WARNING: public for testing: All flags should be defined in {@link Flags}. */
public static UnboundBooleanFlag defineFeatureFlag(String flagId, boolean defaultValue, List<String> owners,
String createdAt, String expiresAt, String description,
diff --git a/node-admin/pom.xml b/node-admin/pom.xml
index ad41ac63915..52873501744 100644
--- a/node-admin/pom.xml
+++ b/node-admin/pom.xml
@@ -149,12 +149,6 @@
<version>${project.version}</version>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>com.yahoo.vespa</groupId>
- <artifactId>zookeeper-server-common</artifactId>
- <version>${project.version}</version>
- <scope>test</scope>
- </dependency>
</dependencies>
<build>
<plugins>
diff --git a/node-repository/pom.xml b/node-repository/pom.xml
index 8e2a7ca0627..fb46735ec73 100644
--- a/node-repository/pom.xml
+++ b/node-repository/pom.xml
@@ -83,12 +83,6 @@
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
- <dependency>
- <groupId>com.yahoo.vespa</groupId>
- <artifactId>zookeeper-server-common</artifactId>
- <version>${project.version}</version>
- <scope>provided</scope>
- </dependency>
<!-- compile -->
<dependency>
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ConfigServerReconfigurer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ConfigServerReconfigurer.java
deleted file mode 100644
index 97113d663d4..00000000000
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/ConfigServerReconfigurer.java
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.provision.maintenance;
-
-import com.yahoo.config.provision.NodeType;
-import com.yahoo.jdisc.Metric;
-import com.yahoo.vespa.flags.BooleanFlag;
-import com.yahoo.vespa.flags.Flags;
-import com.yahoo.vespa.hosted.provision.Node;
-import com.yahoo.vespa.hosted.provision.NodeList;
-import com.yahoo.vespa.hosted.provision.NodeRepository;
-import com.yahoo.vespa.zookeeper.Reconfigurer;
-import com.yahoo.vespa.zookeeper.ZooKeeperServer;
-
-import java.time.Duration;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * Reconfigure members of the config server ZooKeeper cluster, according to the config servers currently active in the
- * node repository.
- *
- * @author mpolden
- */
-public class ConfigServerReconfigurer extends NodeRepositoryMaintainer {
-
- /** Minimum number of config servers required before attempting reconfiguration */
- private static final int MIN_ACTIVE_NODES = 3;
-
- private final Reconfigurer reconfigurer;
- private final BooleanFlag featureFlag;
-
- public ConfigServerReconfigurer(NodeRepository nodeRepository, Duration interval, Metric metric, Reconfigurer reconfigurer) {
- super(nodeRepository, interval, metric);
- this.reconfigurer = reconfigurer;
- this.featureFlag = Flags.DYNAMIC_CONFIG_SERVER_PROVISIONING.bindTo(nodeRepository.flagSource());
- }
-
- @Override
- protected boolean maintain() {
- if (!nodeRepository().zone().getCloud().dynamicProvisioning()) return true;
- if (!featureFlag.value()) return true;
-
- NodeList configNodes = nodeRepository().nodes().list(Node.State.active)
- .nodeType(NodeType.config);
- if (configNodes.size() < MIN_ACTIVE_NODES) return true;
- List<ZooKeeperServer> servers = configNodes.stream()
- .map(node -> new ZooKeeperServer(node.allocation().get().membership().index(), node.hostname()))
- .collect(Collectors.toList());
- reconfigurer.reconfigure(servers);
- return true;
- }
-
-}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintenance.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintenance.java
index 01bbaffa1ed..8929d7f9939 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintenance.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRepositoryMaintenance.java
@@ -17,7 +17,6 @@ import com.yahoo.vespa.hosted.provision.autoscale.MetricsDb;
import com.yahoo.vespa.hosted.provision.provisioning.ProvisionServiceProvider;
import com.yahoo.vespa.orchestrator.Orchestrator;
import com.yahoo.vespa.service.monitor.ServiceMonitor;
-import com.yahoo.vespa.zookeeper.Reconfigurer;
import java.time.Duration;
import java.util.List;
@@ -39,8 +38,7 @@ public class NodeRepositoryMaintenance extends AbstractComponent {
HostLivenessTracker hostLivenessTracker, ServiceMonitor serviceMonitor,
Zone zone, Orchestrator orchestrator, Metric metric,
ProvisionServiceProvider provisionServiceProvider, FlagSource flagSource,
- MetricsFetcher metricsFetcher, MetricsDb metricsDb,
- Reconfigurer reconfigurer) {
+ MetricsFetcher metricsFetcher, MetricsDb metricsDb) {
DefaultTimes defaults = new DefaultTimes(zone, deployer);
PeriodicApplicationMaintainer periodicApplicationMaintainer = new PeriodicApplicationMaintainer(deployer, metric, nodeRepository, defaults.redeployMaintainerInterval,
@@ -67,7 +65,6 @@ public class NodeRepositoryMaintenance extends AbstractComponent {
maintainers.add(new AutoscalingMaintainer(nodeRepository, metricsDb, deployer, metric, defaults.autoscalingInterval));
maintainers.add(new ScalingSuggestionsMaintainer(nodeRepository, metricsDb, defaults.scalingSuggestionsInterval, metric));
maintainers.add(new SwitchRebalancer(nodeRepository, defaults.switchRebalancerInterval, metric, deployer));
- maintainers.add(new ConfigServerReconfigurer(nodeRepository, defaults.configServerReconfigurerInterval, metric, reconfigurer));
if (Set.of(Environment.staging, Environment.perf, Environment.prod).contains(zone.environment())
|| (zone.system().isCd() && zone.environment() == Environment.dev)) // TODO: Temporarily when testing the feature
maintainers.add(new DedicatedClusterControllerClusterMigrator(deployer, metric, nodeRepository, defaults.dedicatedClusterControllerMigratorInterval, flagSource, orchestrator));
@@ -120,7 +117,6 @@ public class NodeRepositoryMaintenance extends AbstractComponent {
private final Duration autoscalingInterval;
private final Duration scalingSuggestionsInterval;
private final Duration switchRebalancerInterval;
- private final Duration configServerReconfigurerInterval;
private final Duration dedicatedClusterControllerMigratorInterval;
private final NodeFailer.ThrottlePolicy throttlePolicy;
@@ -148,7 +144,6 @@ public class NodeRepositoryMaintenance extends AbstractComponent {
scalingSuggestionsInterval = Duration.ofMinutes(31);
spareCapacityMaintenanceInterval = Duration.ofMinutes(30);
switchRebalancerInterval = Duration.ofHours(1);
- configServerReconfigurerInterval = Duration.ofSeconds(90);
throttlePolicy = NodeFailer.ThrottlePolicy.hosted;
retiredExpiry = Duration.ofDays(4); // give up migrating data after 4 days
dedicatedClusterControllerMigratorInterval = zone.environment() == Environment.staging || zone.system().isCd() ? Duration.ofMinutes(3)
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ContainerConfig.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ContainerConfig.java
index e1850b03944..5e40c0bd9ff 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ContainerConfig.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ContainerConfig.java
@@ -29,7 +29,6 @@ public class ContainerConfig {
" <component id='com.yahoo.vespa.hosted.provision.testutils.MockMetricsFetcher'/>\n" +
" <component id='com.yahoo.vespa.hosted.provision.testutils.MockNodeRepository'/>\n" +
" <component id='com.yahoo.vespa.hosted.provision.testutils.MockProvisionServiceProvider'/>\n" +
- " <component id='com.yahoo.vespa.hosted.provision.testutils.MockReconfigurer'/>\n" +
" <component id='com.yahoo.vespa.hosted.provision.maintenance.NodeRepositoryMaintenance'/>\n" +
" <component id='com.yahoo.vespa.flags.InMemoryFlagSource'/>\n" +
" <component id='com.yahoo.config.provision.Zone'/>\n" +
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockReconfigurer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockReconfigurer.java
deleted file mode 100644
index 0b18c144621..00000000000
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockReconfigurer.java
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.provision.testutils;
-
-import com.yahoo.vespa.zookeeper.ReconfigException;
-import com.yahoo.vespa.zookeeper.Reconfigurer;
-import com.yahoo.vespa.zookeeper.Sleeper;
-import com.yahoo.vespa.zookeeper.VespaZooKeeperAdmin;
-import com.yahoo.vespa.zookeeper.ZooKeeperServer;
-
-import java.time.Duration;
-import java.util.Comparator;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * @author mpolden
- */
-public class MockReconfigurer extends Reconfigurer {
-
- private List<ZooKeeperServer> servers = List.of();
- private int reconfigurations = 0;
-
- public MockReconfigurer() {
- super(new MockVespaZooKeperAdmin(), new Sleeper() {
- @Override
- public void sleep(Duration duration) {
- // Ignored
- }
- });
- }
-
- @Override
- public void reconfigure(List<ZooKeeperServer> wantedServers) {
- servers = wantedServers.stream()
- .sorted(Comparator.comparing(ZooKeeperServer::id))
- .collect(Collectors.toUnmodifiableList());
- reconfigurations++;
- }
-
- public List<ZooKeeperServer> servers() {
- return servers;
- }
-
- public int reconfigurations() {
- return reconfigurations;
- }
-
- private static class MockVespaZooKeperAdmin implements VespaZooKeeperAdmin {
-
- @Override
- public void reconfigure(String connectionSpec, String joiningServers, String leavingServers) throws ReconfigException {
- }
-
- }
-
-}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ConfigServerReconfigurerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ConfigServerReconfigurerTest.java
deleted file mode 100644
index 1b7d90e426b..00000000000
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/ConfigServerReconfigurerTest.java
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.provision.maintenance;
-
-import com.yahoo.component.Version;
-import com.yahoo.config.provision.ApplicationId;
-import com.yahoo.config.provision.Cloud;
-import com.yahoo.config.provision.Environment;
-import com.yahoo.config.provision.NodeResources;
-import com.yahoo.config.provision.RegionName;
-import com.yahoo.config.provision.SystemName;
-import com.yahoo.config.provision.Zone;
-import com.yahoo.vespa.flags.Flags;
-import com.yahoo.vespa.flags.InMemoryFlagSource;
-import com.yahoo.vespa.hosted.provision.Node;
-import com.yahoo.vespa.hosted.provision.NodeList;
-import com.yahoo.vespa.hosted.provision.node.Agent;
-import com.yahoo.vespa.hosted.provision.provisioning.FatalProvisioningException;
-import com.yahoo.vespa.hosted.provision.provisioning.HostProvisioner;
-import com.yahoo.vespa.hosted.provision.provisioning.ProvisionedHost;
-import com.yahoo.vespa.hosted.provision.provisioning.ProvisioningTester;
-import com.yahoo.vespa.hosted.provision.testutils.MockReconfigurer;
-import com.yahoo.vespa.zookeeper.ZooKeeperServer;
-import org.junit.Test;
-
-import java.time.Duration;
-import java.util.List;
-import java.util.Set;
-
-import static org.junit.Assert.assertEquals;
-
-/**
- * @author mpolden
- */
-public class ConfigServerReconfigurerTest {
-
- @Test
- public void maintain() {
- InMemoryFlagSource flagSource = new InMemoryFlagSource();
- flagSource.withBooleanFlag(Flags.DYNAMIC_CONFIG_SERVER_PROVISIONING.id(), true);
- ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Cloud.builder().dynamicProvisioning(true).build(),
- SystemName.defaultSystem(),
- Environment.defaultEnvironment(),
- RegionName.defaultName()))
- .hostProvisioner(new MockHostProvisioner())
- .flagSource(flagSource)
- .build();
- MockReconfigurer reconfigurer = new MockReconfigurer();
- ConfigServerReconfigurer maintainer = new ConfigServerReconfigurer(tester.nodeRepository(), Duration.ofDays(1),
- new TestMetric(), reconfigurer);
-
- // Initially there are not enough config servers to trigger reconfiguration
- tester.makeConfigServers(2, 1, "default");
- maintainer.maintain();
- assertEquals("No change: Too few servers", List.of(), reconfigurer.servers());
-
- // Another is added, triggering reconfiguration
- NodeList configServer = tester.makeConfigServers(1, 3, "default");
- maintainer.maintain();
- List<ZooKeeperServer> configuredServers = List.of(new ZooKeeperServer(0, "cfg1"),
- new ZooKeeperServer(1, "cfg2"),
- new ZooKeeperServer(2, "cfg3"));
- assertEquals("Reconfigured", configuredServers, reconfigurer.servers());
- assertEquals(1, reconfigurer.reconfigurations());
-
- // A config server is deallocated, no longer enough active nodes to reconfigure
- tester.nodeRepository().nodes().deallocate(configServer.first().get(), Agent.system, this.getClass().getSimpleName());
- maintainer.maintain();
- assertEquals("No change: Too few active servers", configuredServers, reconfigurer.servers());
- assertEquals(1, reconfigurer.reconfigurations());
- }
-
- private static class MockHostProvisioner implements HostProvisioner {
-
- @Override
- public List<ProvisionedHost> provisionHosts(List<Integer> provisionIndexes, NodeResources resources, ApplicationId applicationId, Version osVersion, HostSharing sharing) {
- return List.of();
- }
-
- @Override
- public List<Node> provision(Node host, Set<Node> children) throws FatalProvisioningException {
- return List.of();
- }
-
- @Override
- public void deprovision(Node host) {
- }
-
- }
-
-}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
index 6ebdfe984a0..23f504a9c0f 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTester.java
@@ -2,7 +2,6 @@
package com.yahoo.vespa.hosted.provision.provisioning;
import com.yahoo.component.Version;
-import com.yahoo.component.Vtag;
import com.yahoo.config.provision.ActivationContext;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ApplicationName;
@@ -442,19 +441,11 @@ public class ProvisioningTester {
return nodes;
}
- public NodeList makeConfigServers(int n, int startIndex, String flavor) {
- return makeConfigServers(n, startIndex, flavor, Vtag.currentVersion);
- }
-
- public NodeList makeConfigServers(int n, String flavor, Version version) {
- return makeConfigServers(n, 1, flavor, version);
- }
-
- public NodeList makeConfigServers(int n, int startIndex, String flavor, Version version) {
+ public NodeList makeConfigServers(int n, String flavor, Version configServersVersion) {
List<Node> nodes = new ArrayList<>(n);
MockNameResolver nameResolver = (MockNameResolver)nodeRepository().nameResolver();
- for (int i = startIndex; i < startIndex + n; i++) {
+ for (int i = 1; i <= n; i++) {
String hostname = "cfg" + i;
String ipv4 = "127.0.1." + i;
@@ -470,7 +461,7 @@ public class ProvisioningTester {
ConfigServerApplication application = new ConfigServerApplication();
List<HostSpec> hosts = prepare(application.getApplicationId(),
- application.getClusterSpecWithVersion(version),
+ application.getClusterSpecWithVersion(configServersVersion),
application.getCapacity());
activate(application.getApplicationId(), new HashSet<>(hosts));
return nodeRepository.nodes().list(Node.State.active).owner(application.getApplicationId());
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/maintenance.json b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/maintenance.json
index d788b321af9..bd4029ec0c0 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/maintenance.json
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/restapi/responses/maintenance.json
@@ -4,9 +4,6 @@
"name": "AutoscalingMaintainer"
},
{
- "name": "ConfigServerReconfigurer"
- },
- {
"name": "DedicatedClusterControllerClusterMigrator"
},
{
diff --git a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java
index 1d47d890421..9c2a543d2ef 100644
--- a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java
+++ b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java
@@ -20,7 +20,7 @@ import java.util.logging.Logger;
import java.util.stream.Collectors;
/**
- * Starts or reconfigures a ZooKeeper server as necessary. This is created as a component
+ * Starts zookeeper server and supports reconfiguring zookeeper cluster. Created as a component
* without any config injected, to make sure that it is not recreated when config changes.
*
* @author hmusum
@@ -45,13 +45,12 @@ public class Reconfigurer extends AbstractComponent {
this(vespaZooKeeperAdmin, new Sleeper());
}
- public Reconfigurer(VespaZooKeeperAdmin vespaZooKeeperAdmin, Sleeper sleeper) {
+ Reconfigurer(VespaZooKeeperAdmin vespaZooKeeperAdmin, Sleeper sleeper) {
this.vespaZooKeeperAdmin = Objects.requireNonNull(vespaZooKeeperAdmin);
this.sleeper = Objects.requireNonNull(sleeper);
log.log(Level.FINE, "Created ZooKeeperReconfigurer");
}
- /** Start a ZooKeeper server or reconfigure a currently running cluster */
void startOrReconfigure(ZookeeperServerConfig newConfig, VespaZooKeeperServer server,
Supplier<QuorumPeer> quorumPeerGetter, Consumer<QuorumPeer> quorumPeerSetter) {
if (zooKeeperRunner == null) {
@@ -59,22 +58,10 @@ public class Reconfigurer extends AbstractComponent {
zooKeeperRunner = startServer(newConfig, server);
}
quorumPeerSetter.accept(peer);
- reconfigure(newConfig);
- }
- /** Reconfigure a running ZooKeeper cluster with given servers. This is a no-op if servers are unchanged */
- public void reconfigure(List<ZooKeeperServer> wantedServers) {
- ZookeeperServerConfig.Builder b = new ZookeeperServerConfig.Builder();
- b.myid(-1) // Required by ZookeeperServerConfig, but not used for reconfiguration
- .dynamicReconfiguration(true);
- for (var server : wantedServers) {
- ZookeeperServerConfig.Server.Builder serverBuilder = new ZookeeperServerConfig.Server.Builder();
- serverBuilder.id(server.id())
- .hostname(server.hostname());
- b.server(serverBuilder);
+ if (shouldReconfigure(newConfig)) {
+ reconfigure(newConfig);
}
- ZookeeperServerConfig newConfig = b.build();
- reconfigure(newConfig);
}
ZookeeperServerConfig activeConfig() {
@@ -90,7 +77,6 @@ public class Reconfigurer extends AbstractComponent {
private boolean shouldReconfigure(ZookeeperServerConfig newConfig) {
if (!newConfig.dynamicReconfiguration()) return false;
if (activeConfig == null) return false;
- if (newConfig.server().isEmpty()) return false;
return !newConfig.equals(activeConfig());
}
@@ -100,9 +86,7 @@ public class Reconfigurer extends AbstractComponent {
return runner;
}
- /** Reconfigure ZooKeeper cluster with given config, if necessary */
private void reconfigure(ZookeeperServerConfig newConfig) {
- if (!shouldReconfigure(newConfig)) return;
Instant reconfigTriggered = Instant.now();
// No point in trying to reconfigure if there is only one server in the new ensemble,
// the others will be shutdown or are about to be shutdown
diff --git a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/ZooKeeperServer.java b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/ZooKeeperServer.java
deleted file mode 100644
index ef75d0b5da7..00000000000
--- a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/ZooKeeperServer.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.zookeeper;
-
-import java.util.Objects;
-
-/**
- * A ZooKeeper server and its ID.
- *
- * @author mpolden
- */
-public class ZooKeeperServer {
-
- private final int id;
- private final String hostname;
-
- public ZooKeeperServer(int id, String hostname) {
- if (id < 0 || id > 255) throw new IllegalArgumentException("server id must be between 0 and 255");
- this.id = id;
- this.hostname = Objects.requireNonNull(hostname);
- }
-
- public int id() {
- return id;
- }
-
- public String hostname() {
- return hostname;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- ZooKeeperServer that = (ZooKeeperServer) o;
- return id == that.id && hostname.equals(that.hostname);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(id, hostname);
- }
-
- @Override
- public String toString() {
- return "server " + id + "=" + hostname;
- }
-}
diff --git a/zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java b/zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java
index 97102ed7f58..94ccbc26f03 100644
--- a/zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java
+++ b/zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java
@@ -14,7 +14,6 @@ import java.io.IOException;
import java.nio.file.Path;
import java.time.Duration;
import java.util.Arrays;
-import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -66,11 +65,6 @@ public class ReconfigurerTest {
assertEquals(1, reconfigurer.reconfigurations());
assertSame(nextConfig, reconfigurer.activeConfig());
- // No reconfiguration happens with empty config
- reconfigurer.startOrReconfigure(createConfig(0, true));
- assertEquals(1, reconfigurer.reconfigurations());
- assertSame(nextConfig, reconfigurer.activeConfig());
-
// Cluster shrinks
nextConfig = createConfig(3, true);
reconfigurer.startOrReconfigure(nextConfig);
@@ -87,14 +81,6 @@ public class ReconfigurerTest {
assertEquals("1=node2:2182:2183;2181,2=node3:2182:2183;2181", reconfigurer.joiningServers());
assertEquals("1,2", reconfigurer.leavingServers());
assertSame(nextConfig, reconfigurer.activeConfig());
-
- // Reconfigure without using config
- reconfigurer.reconfigure(List.of(new ZooKeeperServer(0, "node0"),
- new ZooKeeperServer(1, "node2"),
- new ZooKeeperServer(3, "node4")));
- assertEquals(4, reconfigurer.reconfigurations());
- assertEquals("3=node4:2182:2183;2181", reconfigurer.joiningServers());
- assertEquals("2", reconfigurer.leavingServers());
}
@Test