From db764264a51b0384ff321b8c1c175c8549a35d23 Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Tue, 30 May 2023 21:34:29 +0200 Subject: Remove use of stateGatherCount config, simplify and deprecate config field --- .../ClusterControllerClusterConfigurer.java | 1 - .../vespa/clustercontroller/core/FleetController.java | 2 +- .../clustercontroller/core/FleetControllerOptions.java | 15 --------------- .../clustercontroller/core/MasterElectionHandler.java | 6 +++--- .../core/status/LegacyIndexPageRequestHandler.java | 5 ++--- configdefinitions/src/vespa/fleetcontroller.def | 1 + 6 files changed, 7 insertions(+), 23 deletions(-) diff --git a/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterControllerClusterConfigurer.java b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterControllerClusterConfigurer.java index 786928391a5..a893abb519e 100644 --- a/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterControllerClusterConfigurer.java +++ b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterControllerClusterConfigurer.java @@ -69,7 +69,6 @@ public class ClusterControllerClusterConfigurer extends AbstractComponent { builder.setCount(config.fleet_controller_count()); builder.setZooKeeperSessionTimeout((int) (config.zookeeper_session_timeout() * 1000)); builder.setMasterZooKeeperCooldownPeriod((int) (config.master_zookeeper_cooldown_period() * 1000)); - builder.setStateGatherCount(config.state_gather_count()); builder.setRpcPort(config.rpc_port()); builder.setHttpPort(config.http_port()); builder.setMaxTransitionTime(NodeType.STORAGE, config.storage_transition_time()); diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java index 6876ac8cf56..42460b5943e 100644 --- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java +++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java @@ -561,7 +561,7 @@ public class FleetController implements NodeListener, SlobrokListener, SystemSta if ( ! isRunning()) { return; } - if (masterElectionHandler.isAmongNthFirst(options.stateGatherCount())) { + if (masterElectionHandler.isFirstInLine()) { didWork |= resyncLocallyCachedState(); // Calls to metricUpdate.forWork inside method } else { stepDownAsStateGatherer(); diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetControllerOptions.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetControllerOptions.java index 355c4b766f6..bac6a838300 100644 --- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetControllerOptions.java +++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetControllerOptions.java @@ -24,7 +24,6 @@ public class FleetControllerOptions { private final String clusterName; private final int fleetControllerIndex; private final int fleetControllerCount; - private final int stateGatherCount; private final String[] slobrokConnectionSpecs; private final int rpcPort; @@ -132,7 +131,6 @@ public class FleetControllerOptions { private FleetControllerOptions(String clusterName, int fleetControllerIndex, int fleetControllerCount, - int stateGatherCount, String[] slobrokConnectionSpecs, int rpcPort, int httpPort, @@ -174,7 +172,6 @@ public class FleetControllerOptions { this.clusterName = clusterName; this.fleetControllerIndex = fleetControllerIndex; this.fleetControllerCount = fleetControllerCount; - this.stateGatherCount = stateGatherCount; this.slobrokConnectionSpecs = slobrokConnectionSpecs; this.rpcPort = rpcPort; this.httpPort = httpPort; @@ -235,10 +232,6 @@ public class FleetControllerOptions { return fleetControllerCount; } - public int stateGatherCount() { - return stateGatherCount; - } - public String[] slobrokConnectionSpecs() { return slobrokConnectionSpecs; } @@ -394,7 +387,6 @@ public class FleetControllerOptions { private String clusterName; private int index = 0; private int count = 1; - private int stateGatherCount = 1; private String[] slobrokConnectionSpecs; private int rpcPort = 0; private int httpPort = 0; @@ -464,11 +456,6 @@ public class FleetControllerOptions { return this; } - public Builder setStateGatherCount(int stateGatherCount) { - this.stateGatherCount = stateGatherCount; - return this; - } - public Builder setSlobrokConnectionSpecs(String[] slobrokConnectionSpecs) { Objects.requireNonNull(slobrokConnectionSpecs, "slobrokConnectionSpecs cannot be null"); this.slobrokConnectionSpecs = slobrokConnectionSpecs; @@ -694,7 +681,6 @@ public class FleetControllerOptions { return new FleetControllerOptions(clusterName, index, count, - stateGatherCount, slobrokConnectionSpecs, rpcPort, httpPort, @@ -740,7 +726,6 @@ public class FleetControllerOptions { builder.clusterName = options.clusterName; builder.index = options.fleetControllerIndex; builder.count = options.fleetControllerCount; - builder.stateGatherCount = options.stateGatherCount; builder.slobrokConnectionSpecs = options.slobrokConnectionSpecs; builder.rpcPort = options.rpcPort; builder.httpPort = options.httpPort; diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MasterElectionHandler.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MasterElectionHandler.java index b041e6b14f8..fa303533355 100644 --- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MasterElectionHandler.java +++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MasterElectionHandler.java @@ -118,7 +118,7 @@ public class MasterElectionHandler implements MasterInterface { return 2 * followers <= totalCount; } - public boolean isAmongNthFirst(int first) { return (nextInLineCount < first); } + public boolean isFirstInLine() { return (nextInLineCount < 1); } public boolean watchMasterElection(DatabaseHandler database, DatabaseHandler.DatabaseContext dbContext) { if (totalCount == 1 && !usingZooKeeper) { @@ -251,7 +251,7 @@ public class MasterElectionHandler implements MasterInterface { nextMasterData = null; } - public void writeHtmlState(StringBuilder sb, int stateGatherCount) { + public void writeHtmlState(StringBuilder sb) { sb.append("

Master state

\n"); Integer master = getMaster(); if (master != null) { @@ -270,7 +270,7 @@ public class MasterElectionHandler implements MasterInterface { .append(" before electing new master unless all possible master candidates are online.

"); } } - if ((master == null || master != index) && nextInLineCount < stateGatherCount) { + if ((master == null || master != index) && nextInLineCount < 1) { sb.append("

As we are number ").append(nextInLineCount) .append(" in line for taking over as master, we're gathering state from nodes.

"); sb.append("

As we are not the master, we don't know about nodes current system state" diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/LegacyIndexPageRequestHandler.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/LegacyIndexPageRequestHandler.java index 3297d511469..5aae401e157 100644 --- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/LegacyIndexPageRequestHandler.java +++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/status/LegacyIndexPageRequestHandler.java @@ -81,7 +81,7 @@ public class LegacyIndexPageRequestHandler implements StatusPageServer.RequestHa .append(" ]

\n"); content.append(""); content.append("
UTC time when creating this page:").append(RealTimer.printDateNoMilliSeconds(currentTime, tz)).append("
Cluster controller uptime:" + RealTimer.printDuration(currentTime - startedTime) + "
"); - if (masterElectionHandler.isAmongNthFirst(options.stateGatherCount())) { + if (masterElectionHandler.isFirstInLine()) { // Table overview of all the nodes writeHtmlState(cluster, content, timer, stateVersionTracker, options, eventLog); // Current cluster state and cluster state history @@ -91,7 +91,7 @@ public class LegacyIndexPageRequestHandler implements StatusPageServer.RequestHa writeHtmlState(content, options); } // State of master election - masterElectionHandler.writeHtmlState(content, options.stateGatherCount()); + masterElectionHandler.writeHtmlState(content); // Overview of current config writeHtmlState(content, options); // Event log @@ -223,7 +223,6 @@ public class LegacyIndexPageRequestHandler implements StatusPageServer.RequestHa sb.append("Cluster name").append(options.clusterName()).append(""); sb.append("Fleet controller index").append(options.fleetControllerIndex()).append("/").append(options.fleetControllerCount()).append(""); - sb.append("Number of fleetcontrollers gathering states from nodes").append(options.stateGatherCount()).append(""); sb.append("Slobrok connection spec").append(slobrokspecs).append(""); sb.append("RPC port").append(options.rpcPort() == 0 ? "Pick random available" : options.rpcPort()).append(""); diff --git a/configdefinitions/src/vespa/fleetcontroller.def b/configdefinitions/src/vespa/fleetcontroller.def index 93a20e4ee0d..c3e161eb038 100644 --- a/configdefinitions/src/vespa/fleetcontroller.def +++ b/configdefinitions/src/vespa/fleetcontroller.def @@ -29,6 +29,7 @@ master_zookeeper_cooldown_period double default=60.0 ## If set to 1, only master will gather state. If set higher, others will ## also do so, prioritizing those fleetcontrollers likely to be the ones to ## take over if the master fails. +# TODO: Deprecated, not used anymore, remove in Vespa 9 state_gather_count int default=1 ## Location of ZooKeeper servers -- cgit v1.2.3