aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2020-03-18 08:22:26 +0100
committerGitHub <noreply@github.com>2020-03-18 08:22:26 +0100
commit8259eb143d2d1dc54a869c0742d00b62da8de3b0 (patch)
treee598fa882ec828239ee699d410d7757ba4f72e85
parent1518f32b03986dfeabd0b7962738165d40a60bda (diff)
parentc4e24c2b5f5b1db2596cdad278b047b6c85ce5bb (diff)
Merge pull request #12604 from vespa-engine/hmusum/log-which-cluster-which-has-too-low-redundancy
Log cluster spec when a cluster has too low redundancy
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java10
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ProvisioningTest.java8
3 files changed, 10 insertions, 10 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java
index c0664086498..94f8fb29b9a 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java
@@ -31,12 +31,12 @@ public class CapacityPolicies {
this.isUsingAdvertisedResources = zone.cloud().value().equals("aws");
}
- public int decideSize(Capacity capacity, ClusterSpec.Type clusterType, ApplicationId application) {
+ public int decideSize(Capacity capacity, ClusterSpec cluster, ApplicationId application) {
int requestedNodes = capacity.nodeCount();
if (application.instance().isTester()) return 1;
- ensureRedundancy(requestedNodes, clusterType, capacity.canFail());
+ ensureRedundancy(requestedNodes, cluster, capacity.canFail());
if (capacity.isRequired()) return requestedNodes;
@@ -105,12 +105,12 @@ public class CapacityPolicies {
*
* @throws IllegalArgumentException if only one node is requested and we can fail
*/
- private void ensureRedundancy(int nodeCount, ClusterSpec.Type clusterType, boolean canFail) {
+ private void ensureRedundancy(int nodeCount, ClusterSpec cluster, boolean canFail) {
if (canFail &&
nodeCount == 1 &&
- requiresRedundancy(clusterType) &&
+ requiresRedundancy(cluster.type()) &&
zone.environment().isProduction())
- throw new IllegalArgumentException("Deployments to prod require at least 2 nodes per cluster for redundancy");
+ throw new IllegalArgumentException("Deployments to prod require at least 2 nodes per cluster for redundancy. Not fulfilled for " + cluster);
}
private static boolean requiresRedundancy(ClusterSpec.Type clusterType) {
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java
index 07cf297a314..7a49ad9c44d 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java
@@ -89,7 +89,7 @@ public class NodeRepositoryProvisioner implements Provisioner {
NodeSpec requestedNodes;
Optional<NodeResources> resources = requestedCapacity.nodeResources();
if ( requestedCapacity.type() == NodeType.tenant) {
- int nodeCount = capacityPolicies.decideSize(requestedCapacity, cluster.type(), application);
+ int nodeCount = capacityPolicies.decideSize(requestedCapacity, cluster, application);
if (zone.environment().isManuallyDeployed() && nodeCount < requestedCapacity.nodeCount())
logger.log(Level.INFO, "Requested " + requestedCapacity.nodeCount() + " nodes for " + cluster +
", downscaling to " + nodeCount + " nodes in " + zone.environment());
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 a5527a4a6ee..5cc79891b4e 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
@@ -754,10 +754,10 @@ public class ProvisioningTest {
allHosts.addAll(content1);
Function<Integer, Capacity> capacity = count -> Capacity.fromCount(count, Optional.empty(), required, true);
- int expectedContainer0Size = tester.capacityPolicies().decideSize(capacity.apply(container0Size), containerCluster0.type(), application);
- int expectedContainer1Size = tester.capacityPolicies().decideSize(capacity.apply(container1Size), containerCluster1.type(), application);
- int expectedContent0Size = tester.capacityPolicies().decideSize(capacity.apply(content0Size), contentCluster0.type(), application);
- int expectedContent1Size = tester.capacityPolicies().decideSize(capacity.apply(content1Size), contentCluster1.type(), application);
+ int expectedContainer0Size = tester.capacityPolicies().decideSize(capacity.apply(container0Size), containerCluster0, application);
+ int expectedContainer1Size = tester.capacityPolicies().decideSize(capacity.apply(container1Size), containerCluster1, application);
+ int expectedContent0Size = tester.capacityPolicies().decideSize(capacity.apply(content0Size), contentCluster0, application);
+ int expectedContent1Size = tester.capacityPolicies().decideSize(capacity.apply(content1Size), contentCluster1, application);
assertEquals("Hosts in each group cluster is disjunct and the total number of unretired nodes is correct",
expectedContainer0Size + expectedContainer1Size + expectedContent0Size + expectedContent1Size,