diff options
author | Harald Musum <musum@verizonmedia.com> | 2021-04-08 09:41:33 +0200 |
---|---|---|
committer | Harald Musum <musum@verizonmedia.com> | 2021-04-08 09:41:33 +0200 |
commit | 52a5aa107a526326022b0a5779a54f6b48f585e5 (patch) | |
tree | 70f96190f0de4e6fd699fa3dfb9d3ad566cc1b65 /clustercontroller-core | |
parent | 710092a282bd71f363901831d3feeeca43c64d08 (diff) | |
parent | 0f8387d7f21d392f9d7ab5ee60b10acce1dff4d8 (diff) |
Merge branch 'master' into hmusum/cleanup-7
Diffstat (limited to 'clustercontroller-core')
6 files changed, 32 insertions, 22 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 2f79393a020..75eea998346 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 @@ -170,7 +170,7 @@ public class FleetController implements NodeStateOrHostInfoChangeHandler, NodeAd StatusPageServerInterface statusPageServer, MetricReporter metricReporter) throws Exception { Timer timer = new RealTimer(); - MetricUpdater metricUpdater = new MetricUpdater(metricReporter, options.fleetControllerIndex); + MetricUpdater metricUpdater = new MetricUpdater(metricReporter, options.fleetControllerIndex, options.clusterName); EventLog log = new EventLog(timer, metricUpdater); ContentCluster cluster = new ContentCluster( options.clusterName, @@ -757,21 +757,25 @@ public class FleetController implements NodeStateOrHostInfoChangeHandler, NodeAd } private boolean processNextQueuedRemoteTask() { - if ( ! remoteTasks.isEmpty()) { - final RemoteClusterControllerTask.Context context = createRemoteTaskProcessingContext(); - final RemoteClusterControllerTask task = remoteTasks.poll(); - log.finest(() -> String.format("Processing remote task of type '%s'", task.getClass().getName())); - task.doRemoteFleetControllerTask(context); - if (taskMayBeCompletedImmediately(task)) { - log.finest(() -> String.format("Done processing remote task of type '%s'", task.getClass().getName())); - task.notifyCompleted(); - } else { - log.finest(() -> String.format("Remote task of type '%s' queued until state recomputation", task.getClass().getName())); - tasksPendingStateRecompute.add(task); - } - return true; + metricUpdater.updateRemoteTaskQueueSize(remoteTasks.size()); + + RemoteClusterControllerTask task = remoteTasks.poll(); + if (task == null) { + return false; } - return false; + + final RemoteClusterControllerTask.Context context = createRemoteTaskProcessingContext(); + log.finest(() -> String.format("Processing remote task of type '%s'", task.getClass().getName())); + task.doRemoteFleetControllerTask(context); + if (taskMayBeCompletedImmediately(task)) { + log.finest(() -> String.format("Done processing remote task of type '%s'", task.getClass().getName())); + task.notifyCompleted(); + } else { + log.finest(() -> String.format("Remote task of type '%s' queued until state recomputation", task.getClass().getName())); + tasksPendingStateRecompute.add(task); + } + + return true; } private boolean taskMayBeCompletedImmediately(RemoteClusterControllerTask task) { diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MetricUpdater.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MetricUpdater.java index 6a80772904f..94b6f412ce6 100644 --- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MetricUpdater.java +++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MetricUpdater.java @@ -14,9 +14,10 @@ public class MetricUpdater { private final ComponentMetricReporter metricReporter; - public MetricUpdater(MetricReporter metricReporter, int controllerIndex) { + public MetricUpdater(MetricReporter metricReporter, int controllerIndex, String clusterName) { this.metricReporter = new ComponentMetricReporter(metricReporter, "cluster-controller."); this.metricReporter.addDimension("controller-index", String.valueOf(controllerIndex)); + this.metricReporter.addDimension("clusterid", clusterName); } public MetricReporter.Context createContext(Map<String, String> dimensions) { @@ -99,4 +100,7 @@ public class MetricUpdater { metricReporter.add("node-event", 1); } + public void updateRemoteTaskQueueSize(int size) { + metricReporter.set("remote-task-queue.size", size); + } } diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterFeedBlockTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterFeedBlockTest.java index 56d567db035..c4db6b9525b 100644 --- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterFeedBlockTest.java +++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterFeedBlockTest.java @@ -49,7 +49,7 @@ public class ClusterFeedBlockTest extends FleetControllerTest { } communicator = new DummyCommunicator(nodes, timer); - MetricUpdater metricUpdater = new MetricUpdater(new NoMetricReporter(), options.fleetControllerIndex); + MetricUpdater metricUpdater = new MetricUpdater(new NoMetricReporter(), options.fleetControllerIndex, options.clusterName); EventLog eventLog = new EventLog(timer, metricUpdater); ContentCluster cluster = new ContentCluster(options.clusterName, options.nodes, options.storageDistribution); NodeStateGatherer stateGatherer = new NodeStateGatherer(timer, timer, eventLog); 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 b238a9eadcf..1d7b6886222 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 @@ -153,7 +153,7 @@ public abstract class FleetControllerTest implements Waiter { FleetController createFleetController(boolean useFakeTimer, FleetControllerOptions options, boolean startThread, StatusPageServerInterface status) throws Exception { Objects.requireNonNull(status, "status server cannot be null"); Timer timer = useFakeTimer ? this.timer : new RealTimer(); - MetricUpdater metricUpdater = new MetricUpdater(new NoMetricReporter(), options.fleetControllerIndex); + MetricUpdater metricUpdater = new MetricUpdater(new NoMetricReporter(), options.fleetControllerIndex, options.clusterName); EventLog log = new EventLog(timer, metricUpdater); ContentCluster cluster = new ContentCluster( options.clusterName, diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/MetricReporterTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/MetricReporterTest.java index 3e44995dc78..aef223d7aee 100644 --- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/MetricReporterTest.java +++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/MetricReporterTest.java @@ -21,9 +21,11 @@ import static org.mockito.hamcrest.MockitoHamcrest.doubleThat; public class MetricReporterTest { + private static final String CLUSTER_NAME = "foo"; + private static class Fixture { final MetricReporter mockReporter = mock(MetricReporter.class); - final MetricUpdater metricUpdater = new MetricUpdater(mockReporter, 0); + final MetricUpdater metricUpdater = new MetricUpdater(mockReporter, 0, CLUSTER_NAME); final ClusterFixture clusterFixture; Fixture() { @@ -42,8 +44,8 @@ public class MetricReporterTest { private static HasMetricContext.Dimension[] withClusterDimension() { // Dimensions that are always present HasMetricContext.Dimension controllerDim = withDimension("controller-index", "0"); - HasMetricContext.Dimension clusterDim = withDimension("cluster", "foo"); - HasMetricContext.Dimension clusteridDim = withDimension("clusterid", "foo"); + HasMetricContext.Dimension clusterDim = withDimension("cluster", CLUSTER_NAME); + HasMetricContext.Dimension clusteridDim = withDimension("clusterid", CLUSTER_NAME); return new HasMetricContext.Dimension[] { controllerDim, clusterDim, clusteridDim }; } diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeTest.java index af39e43bb36..2b71f909115 100644 --- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeTest.java +++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeTest.java @@ -50,7 +50,7 @@ public class StateChangeTest extends FleetControllerTest { } communicator = new DummyCommunicator(nodes, timer); - MetricUpdater metricUpdater = new MetricUpdater(new NoMetricReporter(), options.fleetControllerIndex); + MetricUpdater metricUpdater = new MetricUpdater(new NoMetricReporter(), options.fleetControllerIndex, options.clusterName); eventLog = new EventLog(timer, metricUpdater); ContentCluster cluster = new ContentCluster(options.clusterName, options.nodes, options.storageDistribution); NodeStateGatherer stateGatherer = new NodeStateGatherer(timer, timer, eventLog); |