summaryrefslogtreecommitdiffstats
path: root/clustercontroller-core
diff options
context:
space:
mode:
authorArne Juul <arnej@yahoo-inc.com>2017-09-22 10:37:49 +0000
committerArne Juul <arnej@yahoo-inc.com>2017-09-22 10:37:49 +0000
commit5767d9b188cd3efadbd30e2decd963c0d168fdbc (patch)
tree6ba9f61ce8d24ea8b5707aa21bb6600f8d08e84f /clustercontroller-core
parentc9f97f7effb5fcd2a8ffe620258cd5629fb7dc73 (diff)
parentf4a65c8f7cb27bd0e449d99e223ba1a0d9135049 (diff)
Merge branch 'master' into bratseth/nonfunctional-changes-4
Conflicts: vespajlib/src/main/java/com/yahoo/concurrent/lock/Locks.java
Diffstat (limited to 'clustercontroller-core')
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java3
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/SetNodeStateRequest.java4
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/StateChangeTest.java15
-rw-r--r--clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/SetNodeStateTest.java5
4 files changed, 23 insertions, 4 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 0b0653274a4..120b482e11d 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/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/SetNodeStateRequest.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/SetNodeStateRequest.java
index c56ce5da352..2c094769961 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/SetNodeStateRequest.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/restapiv2/requests/SetNodeStateRequest.java
@@ -67,7 +67,9 @@ public class SetNodeStateRequest extends Request<SetResponse> {
@Override
public boolean hasVersionAckDependency() {
- return (this.responseWait == SetUnitStateRequest.ResponseWait.WAIT_UNTIL_CLUSTER_ACKED);
+ // FIXME this is a temporary change while edge cases in interactions between controller
+ // and orchestration are sorted out.
+ return false;
}
static SetResponse setWantedState(
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());
+ }
+
}
diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/SetNodeStateTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/SetNodeStateTest.java
index 88483e47f4e..0f35b96c31d 100644
--- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/SetNodeStateTest.java
+++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/restapiv2/SetNodeStateTest.java
@@ -374,10 +374,11 @@ public class SetNodeStateTest extends StateRestApiTest {
.setNewState("user", "maintenance", "whatever reason."));
}
+ // FIXME requests should be tagged as version dependent; temporary workaround
@Test
- public void set_node_state_requests_are_by_default_tagged_as_having_version_ack_dependency() {
+ public void set_node_state_requests_are_by_default_not_tagged_as_having_version_ack_dependency() {
SetNodeStateRequest request = createDummySetNodeStateRequest();
- assertTrue(request.hasVersionAckDependency());
+ assertFalse(request.hasVersionAckDependency());
}
@Test