summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-09-19 18:46:07 +0200
committerGitHub <noreply@github.com>2017-09-19 18:46:07 +0200
commitb853bd3dbe033da6b3fa141f8a84b38f45c78e76 (patch)
tree6e5e8b5470c1b34f8d9ef28223bd5247f3fd5466
parentcbd12c3b9baf630c216c3957d2d31f24ba32c399 (diff)
parentb9e23296d4b7c36f910054f8d073f0ebef925c23 (diff)
Merge pull request #3453 from vespa-engine/vekterli/immediately-complete-remote-tasks-when-not-leader
Immediately complete remote tasks when not leader
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java3
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeTest.java15
2 files changed, 17 insertions, 1 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 d8628663199..745ade3f04b 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
@@ -665,7 +665,8 @@ public class FleetController implements NodeStateOrHostInfoChangeHandler, NodeAd
final RemoteClusterControllerTask task = remoteTasks.poll();
log.finest(() -> String.format("Processing remote task of type '%s'", task.getClass().getName()));
task.doRemoteFleetControllerTask(context);
- if (!task.hasVersionAckDependency()) {
+ // We cannot introduce a version barrier for tasks when we're not the master (and therefore will not publish new versions).
+ if (!isMaster() || !task.hasVersionAckDependency()) {
log.finest(() -> String.format("Done processing remote task of type '%s'", task.getClass().getName()));
task.notifyCompleted();
} else {
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 49cfe8bd3b6..6a8ffae8f3f 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
@@ -1508,4 +1508,19 @@ public class StateChangeTest extends FleetControllerTest {
assertTrue(task.isCompleted());
}
+ @Test
+ public void synchronous_task_immediately_answered_when_not_leader() throws Exception {
+ FleetControllerOptions options = optionsWithZeroTransitionTime();
+ options.fleetControllerCount = 3;
+ RemoteTaskFixture fixture = createFixtureWith(options);
+
+ fixture.loseLeadership();
+ markAllNodesAsUp(options);
+
+ MockTask task = fixture.scheduleVersionDependentTaskWithSideEffects();
+
+ assertTrue(task.isInvoked());
+ assertTrue(task.isCompleted());
+ }
+
}