summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2023-11-28 15:39:34 +0100
committerGitHub <noreply@github.com>2023-11-28 15:39:34 +0100
commitd4f030fca74bb4795a993b30716c0a1ce68f6bfe (patch)
tree0db6f1174b40290af3ae3a64da209ca2df82ae66
parent577a0b44cfa904fc994dd1eed9adedd920079219 (diff)
parent85c6c53bbddad1aebb3e49fca4611fa2c9fd77be (diff)
Merge pull request #29484 from vespa-engine/mpolden/less-moving
Avoid moves to hosts that contain cluster nodes in any state
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerServiceMock.java3
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/SwitchRebalancer.java4
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Status.java5
3 files changed, 4 insertions, 8 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerServiceMock.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerServiceMock.java
index 2c672d0eada..0807d13d7a8 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerServiceMock.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerServiceMock.java
@@ -15,7 +15,6 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
-import java.util.concurrent.atomic.AtomicBoolean;
import static java.util.Objects.requireNonNull;
import static java.util.stream.Collectors.toMap;
@@ -68,7 +67,7 @@ public class LoadBalancerServiceMock implements LoadBalancerService {
public LoadBalancerInstance provision(LoadBalancerSpec spec) {
if (throwOnCreate) throw new IllegalStateException("Did not expect a new load balancer to be created");
var instance = new LoadBalancerInstance(
- Optional.of(DomainName.of("lb-" + spec.application().toShortString() + "-" + spec.cluster().value())),
+ Optional.of(DomainName.of("lb-" + spec.application().toShortString().replaceAll("_", "--") + "-" + spec.cluster().value())),
Optional.empty(),
Optional.empty(),
Optional.of(new DnsZone("zone-id-1")),
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/SwitchRebalancer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/SwitchRebalancer.java
index 5e600b990ae..112f1fa96f6 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/SwitchRebalancer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/SwitchRebalancer.java
@@ -69,7 +69,9 @@ public class SwitchRebalancer extends NodeMover<Move> {
private NodeList clusterOf(Node node, NodeList allNodes) {
ApplicationId application = node.allocation().get().owner();
ClusterSpec.Id cluster = node.allocation().get().membership().cluster().id();
- return allNodes.state(Node.State.active)
+ // This considers some non-active states to prevent unnecessary moves. E.g. we don't want to start moving nodes
+ // to a host which already contain a failed node in our cluster
+ return allNodes.state(Node.State.reserved, Node.State.active, Node.State.failed, Node.State.parked)
.owner(application)
.cluster(cluster);
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Status.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Status.java
index 04f08240e43..0fdb00f6584 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Status.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Status.java
@@ -133,11 +133,6 @@ public class Status {
return new Status(reboot, vespaVersion, containerImage, failCount, wantToRetire, wantToDeprovision, wantToRebuild, preferToRetire, wantToFail, wantToUpgradeFlavor, osVersion, firmwareVerifiedAt);
}
- /** Returns a copy of this with wantToUpgradeFlavor set to given value */
- public Status withWantToUpgradeFlavor(boolean wantToUpgradeFlavor) {
- return new Status(reboot, vespaVersion, containerImage, failCount, wantToRetire, wantToDeprovision, wantToRebuild, preferToRetire, wantToFail, wantToUpgradeFlavor, osVersion, firmwareVerifiedAt);
- }
-
/** Returns a copy of this with the OS version set to given version */
public Status withOsVersion(OsVersion version) {
return new Status(reboot, vespaVersion, containerImage, failCount, wantToRetire, wantToDeprovision, wantToRebuild, preferToRetire, wantToFail, wantToUpgradeFlavor, version, firmwareVerifiedAt);