summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeir Storli <geirst@oath.com>2018-03-19 14:20:15 +0100
committerGeir Storli <geirst@oath.com>2018-03-19 14:36:20 +0100
commit87f268fa80c8d0f7314925ed3f3d4e2758af33ce (patch)
tree6b0d5df1ede55f7ece42cdd459b5c563a370c273
parentd5096254be8a0e21301c8575e193cf68488c39b9 (diff)
Fix ClusterStatsChangeTracker to handle case where current node is not found in previous state.
Cluster stats may have changed in this case.
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsChangeTracker.java2
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsChangeTrackerTest.java10
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateVersionTrackerTest.java9
3 files changed, 15 insertions, 6 deletions
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsChangeTracker.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsChangeTracker.java
index adfae7e36ea..75e8db40f0e 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsChangeTracker.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsChangeTracker.java
@@ -53,7 +53,7 @@ public class ClusterStatsChangeTracker {
if (prevValue != currValue) {
return true;
}
- } else if (currValue) {
+ } else {
return true;
}
}
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsChangeTrackerTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsChangeTrackerTest.java
index c3dcf1e1cfc..4e5de68756d 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsChangeTrackerTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsChangeTrackerTest.java
@@ -77,14 +77,14 @@ public class ClusterStatsChangeTrackerTest {
}
@Test
- public void stats_have_not_changed_if_all_nodes_in_sync_and_nothing_previous() {
- Fixture f = Fixture.fromStats(stats().inSync(0).inSync(1));
- assertFalse(f.statsHaveChanged());
+ public void stats_have_changed_if_in_sync_node_not_found_in_previous_stats() {
+ Fixture f = Fixture.fromStats(stats().inSync(0));
+ assertTrue(f.statsHaveChanged());
}
@Test
- public void stats_have_changed_if_one_node_with_buckets_pending_and_nothing_previous() {
- Fixture f = Fixture.fromStats(stats().inSync(0).bucketsPending(1));
+ public void stats_have_changed_if_buckets_pending_node_not_found_in_previous_stats() {
+ Fixture f = Fixture.fromStats(stats().bucketsPending(0));
assertTrue(f.statsHaveChanged());
}
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateVersionTrackerTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateVersionTrackerTest.java
index c92f1badae8..02017972e59 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateVersionTrackerTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateVersionTrackerTest.java
@@ -277,11 +277,20 @@ public class StateVersionTrackerTest {
when(distributorNode.isDistributor()).thenReturn(true);
assertFalse(tracker.bucketSpaceMergeCompletionStateHasChanged());
+ // Set baseline state
tracker.updateLatestCandidateStateBundle(ClusterStateBundle
.ofBaselineOnly(stateWithoutAnnotations("distributor:1 storage:1")));
tracker.promoteCandidateToVersionedState(1234);
assertFalse(tracker.bucketSpaceMergeCompletionStateHasChanged());
+ // Current node not in previous stats
+ tracker.handleUpdatedHostInfo(distributorNode, createHostInfo(0));
+ assertTrue(tracker.bucketSpaceMergeCompletionStateHasChanged());
+
+ // Sync aggregated stats
+ tracker.updateLatestCandidateStateBundle(ClusterStateBundle
+ .ofBaselineOnly(stateWithoutAnnotations("distributor:1 storage:1")));
+
// Give 'global' bucket space no buckets pending, which is the same as previous stats
tracker.handleUpdatedHostInfo(distributorNode, createHostInfo(0));
assertFalse(tracker.bucketSpaceMergeCompletionStateHasChanged());