summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/LoadBalancerExpirer.java11
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java44
2 files changed, 45 insertions, 10 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/LoadBalancerExpirer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/LoadBalancerExpirer.java
index 93f0b75dcdf..e2b70608d58 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/LoadBalancerExpirer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/LoadBalancerExpirer.java
@@ -1,7 +1,6 @@
// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.maintenance;
-import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.log.LogLevel;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeRepository;
@@ -131,15 +130,7 @@ public class LoadBalancerExpirer extends Maintainer {
}
private List<Node> allocatedNodes(LoadBalancerId loadBalancer) {
- return nodeRepository().list()
- .owner(loadBalancer.application())
- .cluster(loadBalancer.cluster())
- // TODO(mpolden): Remove after March 2020. This ignores nodes in combined clusters so
- // that inactive load balancers for combined clusters with wrong ID are
- // eventually removed.
- .filter(node -> node.allocation().isPresent() &&
- node.allocation().get().membership().cluster().type() != ClusterSpec.Type.combined)
- .asList();
+ return nodeRepository().list().owner(loadBalancer.application()).cluster(loadBalancer.cluster()).asList();
}
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java
index 1ab94e852ba..a0f0cd26f59 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java
@@ -671,6 +671,50 @@ public class ProvisioningTest {
assertEquals(version2, node.allocation().get().membership().cluster().vespaVersion()));
}
+ @Test
+ public void change_to_and_from_combined_cluster_does_not_change_node_allocation() {
+ var tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).build();
+ var application = tester.makeApplicationId();
+
+ tester.makeReadyNodes(4, defaultResources);
+
+ // Application allocates two content nodes initially, with cluster type content
+ ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.content,
+ ClusterSpec.Id.from("music"),
+ Version.fromString("1.2.3"),
+ false);
+ var initalNodes = tester.activate(application, tester.prepare(application, cluster,
+ Capacity.fromCount(2, defaultResources, false, false),
+ 1));
+
+ // Application is redeployed with cluster type combined
+ cluster = ClusterSpec.request(ClusterSpec.Type.combined,
+ ClusterSpec.Id.from("music"),
+ Version.fromString("1.2.3"),
+ false);
+ var newNodes = tester.activate(application, tester.prepare(application, cluster,
+ Capacity.fromCount(2, defaultResources, false, false),
+ 1));
+
+ assertEquals("Node allocation remains the same", initalNodes, newNodes);
+ assertEquals("Cluster type is updated",
+ Set.of(ClusterSpec.Type.combined),
+ newNodes.stream().map(n -> n.membership().get().cluster().type()).collect(Collectors.toSet()));
+
+ // Application is redeployed with cluster type content again
+ cluster = ClusterSpec.request(ClusterSpec.Type.content,
+ ClusterSpec.Id.from("music"),
+ Version.fromString("1.2.3"),
+ false);
+ newNodes = tester.activate(application, tester.prepare(application, cluster,
+ Capacity.fromCount(2, defaultResources, false, false),
+ 1));
+ assertEquals("Node allocation remains the same", initalNodes, newNodes);
+ assertEquals("Cluster type is updated",
+ Set.of(ClusterSpec.Type.content),
+ newNodes.stream().map(n -> n.membership().get().cluster().type()).collect(Collectors.toSet()));
+ }
+
private SystemState prepare(ApplicationId application, int container0Size, int container1Size, int content0Size,
int content1Size, NodeResources flavor, ProvisioningTester tester) {
return prepare(application, container0Size, container1Size, content0Size, content1Size, flavor,