From 96d3f5543a9ec7926a30411e8ab0dcb34cc56eb8 Mon Sep 17 00:00:00 2001 From: Tor Brede Vekterli Date: Mon, 11 Sep 2017 16:02:18 +0200 Subject: Test multiple scheduled synchronous tasks --- .../vespa/clustercontroller/core/FleetController.java | 2 +- .../vespa/clustercontroller/core/StateChangeTest.java | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) (limited to 'clustercontroller-core/src') 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 7d579d241b7..31fa5635c42 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 @@ -692,7 +692,7 @@ public class FleetController implements NodeStateOrHostInfoChangeHandler, NodeAd while (!taskCompletionQueue.isEmpty()) { VersionDependentTaskCompletion taskCompletion = taskCompletionQueue.peek(); if (publishedVersion >= taskCompletion.getMinimumVersion()) { - log.info(() -> String.format("Deferred task of type '%s' has minimum version %d, published is %d; completing", + log.fine(() -> String.format("Deferred task of type '%s' has minimum version %d, published is %d; completing", taskCompletion.getTask().getClass().getName(), taskCompletion.getMinimumVersion(), publishedVersion)); taskCompletion.getTask().notifyCompleted(); taskCompletionQueue.remove(); 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 24cecd4f5b6..a452a85c870 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 @@ -1446,6 +1446,24 @@ public class StateChangeTest extends FleetControllerTest { assertTrue(task.isCompleted()); } + @Test + public void multiple_tasks_may_be_scheduled_and_answered_at_the_same_time() throws Exception { + RemoteTaskFixture fixture = createDefaultFixture(); + communicator.setShouldDeferDistributorClusterStateAcks(true); + + MockTask task1 = fixture.scheduleNonIdempotentVersionDependentTask(); + MockTask task2 = fixture.scheduleNonIdempotentVersionDependentTask(); + + fixture.processScheduledTask(); + assertFalse(task1.isCompleted()); + assertFalse(task2.isCompleted()); + + fixture.sendAllDeferredDistributorClusterStateAcks(); + + assertTrue(task1.isCompleted()); + assertTrue(task2.isCompleted()); + } + @Test public void synchronous_task_immediately_failed_when_leadership_lost() throws Exception { FleetControllerOptions options = optionsWithZeroTransitionTime(); -- cgit v1.2.3