diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2017-09-19 18:46:07 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-19 18:46:07 +0200 |
commit | b853bd3dbe033da6b3fa141f8a84b38f45c78e76 (patch) | |
tree | 6e5e8b5470c1b34f8d9ef28223bd5247f3fd5466 | |
parent | cbd12c3b9baf630c216c3957d2d31f24ba32c399 (diff) | |
parent | b9e23296d4b7c36f910054f8d073f0ebef925c23 (diff) |
Merge pull request #3453 from vespa-engine/vekterli/immediately-complete-remote-tasks-when-not-leader
Immediately complete remote tasks when not leader
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()); + } + } |