summaryrefslogtreecommitdiffstats
path: root/clustercontroller-core
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2022-09-20 11:21:20 +0200
committerHarald Musum <musum@yahooinc.com>2022-09-20 11:21:20 +0200
commit7d145e39d3d043fe696c4e999040fb6d1c24b0c6 (patch)
tree602ec613cebfe4b9f88982c5c0c6123a8e87b3f5 /clustercontroller-core
parentbd7b4d77d57c6d40d0da9387a89bdeffefaacd98 (diff)
Set slobrok connection specs in constructor
Diffstat (limited to 'clustercontroller-core')
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/SlobrokClient.java24
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FleetControllerTest.java3
3 files changed, 18 insertions, 11 deletions
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 f2f9e52262b..80b79f4eb13 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
@@ -167,7 +167,7 @@ public class FleetController implements NodeListener, SlobrokListener, SystemSta
options.nodeStateRequestTimeoutLatestPercentage(),
options.nodeStateRequestRoundTripTimeMaxSeconds());
var database = new DatabaseHandler(context, new ZooKeeperDatabaseFactory(context), timer, options.zooKeeperServerAddress(), timer);
- var lookUp = new SlobrokClient(context, timer);
+ var lookUp = new SlobrokClient(context, timer, options.slobrokConnectionSpecs());
var stateGenerator = new StateChangeHandler(context, timer, log);
var stateBroadcaster = new SystemStateBroadcaster(context, timer, timer);
var masterElectionHandler = new MasterElectionHandler(context, options.fleetControllerIndex(), options.fleetControllerCount(), timer, timer);
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/SlobrokClient.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/SlobrokClient.java
index 8393e776fc2..d87e0e20908 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/SlobrokClient.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/SlobrokClient.java
@@ -35,30 +35,37 @@ public class SlobrokClient implements NodeLookup {
private Supervisor supervisor;
private boolean freshMirror = false;
- public SlobrokClient(FleetControllerContext context, Timer timer) {
+ public SlobrokClient(FleetControllerContext context, Timer timer, String[] connectionSpecs) {
this.context = context;
this.timer = timer;
+ this.connectionSpecs = connectionSpecs;
+ setup();
}
- public boolean equalsExistingSpec(String spec[]) {
+ public boolean equalsExistingSpec(String[] spec) {
if (spec == null && connectionSpecs == null) return true;
- if (spec == null && connectionSpecs != null) return false;
- if (spec != null && connectionSpecs == null) return false;
+ if (spec == null) return false;
+ if (connectionSpecs == null) return false;
if (spec.length != connectionSpecs.length) return false;
- for (int i=0, n=spec.length; i<n; ++i) {
+ for (int i = 0, n = spec.length; i < n; ++i) {
if (!spec[i].equals(connectionSpecs[i])) return false;
}
return true;
}
- public void setSlobrokConnectionSpecs(String slobrokConnectionSpecs[]) {
+ public void setSlobrokConnectionSpecs(String[] slobrokConnectionSpecs) {
if (equalsExistingSpec(slobrokConnectionSpecs)) return;
+
this.connectionSpecs = slobrokConnectionSpecs;
shutdown();
+ setup();
+ }
+
+ private void setup() {
supervisor = new Supervisor(new Transport("slobrok-client"));
supervisor.setDropEmptyBuffers(true);
SlobrokList slist = new SlobrokList();
- slist.setup(slobrokConnectionSpecs);
+ slist.setup(connectionSpecs);
mirror = new Mirror(supervisor, slist);
freshMirror = true;
}
@@ -80,6 +87,7 @@ public class SlobrokClient implements NodeLookup {
@Override
public boolean updateCluster(ContentCluster cluster, SlobrokListener listener) {
if (mirror == null) return false;
+
int mirrorVersion = mirror.updates();
if (freshMirror) {
freshMirror = false;
@@ -124,7 +132,7 @@ public class SlobrokClient implements NodeLookup {
// XXX we really would like to cross-check the actual RPC address against what's configured,
// but this information does not seem to be available to the cluster controller currently.
NodeInfo nodeInfo = cluster.clusterInfo().getNodeInfo(data.node);
- if (nodeInfo == null) continue; // slobrok may contain nonconfigured nodes during state transitions
+ if (nodeInfo == null) continue; // slobrok may contain non-configured nodes during state transitions
cluster.clusterInfo().setRpcAddress(data.node, data.rpcAddress);
if (listener != null)
listener.handleNewNode(nodeInfo); // TODO: We'll never add new nodes here, move this to where clusterInfo.setNodes is called?
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FleetControllerTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FleetControllerTest.java
index d2ae4a8623f..f7efbd2cc3b 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FleetControllerTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/FleetControllerTest.java
@@ -125,8 +125,7 @@ public abstract class FleetControllerTest implements Waiter {
options.nodeStateRequestTimeoutEarliestPercentage(),
options.nodeStateRequestTimeoutLatestPercentage(),
options.nodeStateRequestRoundTripTimeMaxSeconds());
- var lookUp = new SlobrokClient(context, timer);
- lookUp.setSlobrokConnectionSpecs(new String[0]);
+ var lookUp = new SlobrokClient(context, timer, new String[0]);
var rpcServer = new RpcServer(timer, timer, options.clusterName(), options.fleetControllerIndex(), options.slobrokBackOffPolicy());
var database = new DatabaseHandler(context, new ZooKeeperDatabaseFactory(context), timer, options.zooKeeperServerAddress(), timer);