summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorvalerijf <valerijf@yahoo-inc.com>2017-05-30 14:11:10 +0200
committervalerijf <valerijf@yahoo-inc.com>2017-05-30 14:11:10 +0200
commit97a584f578af3200761204050982b2c8ef57f0c8 (patch)
tree4b28d27403237afe013d41c64fb5989f93fed029 /node-repository
parenta9772aff3ee6ce7b1f76322b0617890545289592 (diff)
NodeRetirer: Number of spares per flavor to two
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRetirer.java2
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRetirerTest.java38
2 files changed, 20 insertions, 20 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRetirer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRetirer.java
index 835ca66bee2..880c5da457a 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRetirer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRetirer.java
@@ -190,7 +190,7 @@ public class NodeRetirer extends Maintainer {
* and ready nodes.
*/
long getNumSpareNodes(long numActiveNodes, long numReadyNodes) {
- long numNodesToSpare = (long) Math.ceil(0.1 * numActiveNodes);
+ long numNodesToSpare = 2;
return Math.max(0L, numReadyNodes - numNodesToSpare);
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRetirerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRetirerTest.java
index f3a234588fd..c466cfca200 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRetirerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/maintenance/NodeRetirerTest.java
@@ -56,18 +56,18 @@ public class NodeRetirerTest {
tester = new NodeRetirerTester(nodeFlavors);
retirer = new NodeRetirer(tester.nodeRepository, NodeRetirerTester.zone, flavorClusters, Duration.ofDays(1), new JobControl(tester.nodeRepository.database()), policy);
- tester.createReadyNodesByFlavor(5, 3, 77, 47);
+ tester.createReadyNodesByFlavor(7, 4, 77, 47);
tester.deployApp("vespa", "calendar", 0, 3);
tester.deployApp("vespa", "notes", 2, 12);
tester.deployApp("sports", "results", 2, 7);
tester.deployApp("search", "images", 3, 6);
// Not all nodes that we wanted to retire could be retired now (Not enough spare nodes)
- assertSpareCountsByFlavor(1, 3, 56, 40);
+ assertSpareCountsByFlavor(2, 2, 56, 39);
assertFalse(retirer.retireUnallocated());
- assertParkedCountsByFlavor(1, 3, 56, 40);
+ assertParkedCountsByFlavor(2, 2, 56, 39);
- assertSpareCountsByFlavor(0, -1, 0, 0);
+ assertSpareCountsByFlavor(0, 0, 0, 0);
// Lets change parked nodes IP address and set it back to ready
tester.nodeRepository.getNodes(Node.State.parked)
.forEach(node -> {
@@ -79,19 +79,19 @@ public class NodeRetirerTest {
});
// The remaining nodes we wanted to retire has been retired
- assertSpareCountsByFlavor(1, 3, 56, 40);
+ assertSpareCountsByFlavor(2, 2, 56, 39);
assertTrue(retirer.retireUnallocated());
- assertParkedCountsByFlavor(1, -1, 2, 1);
+ assertParkedCountsByFlavor(2, 2, 2, 2);
}
/* Creates flavors where 'replaces' graph and node counts that looks like this:
* Total nodes: 40 1
- * | 4 Total nodes: 7
- * Total nodes: 20 | | search.images nodes: 4
- * vespa.notes nodes: 3 0 |
- * sports.results nodes: 6 / \ 5 Total nodes: 5
- * / \ search.videos nodes: 2
- * Total nodes: 25 2 3 Total nodes: 14
+ * | 4 Total nodes: 8
+ * Total nodes: 20 | | search.images nodes: 4
+ * vespa.notes nodes: 3 0 |
+ * sports.results nodes: 6 / \ 5 Total nodes: 6
+ * / \ Total nodes: 14 search.videos nodes: 2
+ * Total nodes: 25 2 3 vespa.calendar nodes: 7
*/
@Test
public void testRetireAllocatedNodes() throws InterruptedException {
@@ -105,7 +105,7 @@ public class NodeRetirerTest {
FlavorClusters flavorClusters = new FlavorClusters(nodeFlavors.getFlavors());
tester = new NodeRetirerTester(nodeFlavors);
- tester.createReadyNodesByFlavor(20, 40, 25, 14, 7, 5);
+ tester.createReadyNodesByFlavor(21, 42, 27, 15, 8, 6);
tester.deployApp("vespa", "calendar", 3, 7);
tester.deployApp("vespa", "notes", 0, 3);
tester.deployApp("sports", "results", 0, 6);
@@ -258,7 +258,7 @@ public class NodeRetirerTest {
public void testGetNumberSpareNodesWithNoActiveNodes() {
addNodesByFlavor(Node.State.ready, 5, 3, 77);
- Map<Flavor, Long> expected = expectedCountsByFlavor(5, 3, 77);
+ Map<Flavor, Long> expected = expectedCountsByFlavor(3, 1, 75);
Map<Flavor, Long> actual = retirer.getNumberSpareReadyNodesByFlavor(nodes);
assertEquals(expected, actual);
}
@@ -268,7 +268,7 @@ public class NodeRetirerTest {
addNodesByFlavor(Node.State.ready, 5, 3, 77, 47);
addNodesByFlavor(Node.State.active, 0, 10, 2, 230, 137);
- Map<Flavor, Long> expected = expectedCountsByFlavor(5, 2, 76, 24);
+ Map<Flavor, Long> expected = expectedCountsByFlavor(3, 1, 75, 45);
Map<Flavor, Long> actual = retirer.getNumberSpareReadyNodesByFlavor(nodes);
assertEquals(expected, actual);
}
@@ -326,13 +326,13 @@ public class NodeRetirerTest {
when(retirer.getNumSpareNodes(any(Long.class), any(Long.class))).thenCallRealMethod();
assertEquals(retirer.getNumSpareNodes(0, 0), 0L);
- assertEquals(retirer.getNumSpareNodes(0, 1), 1L);
- assertEquals(retirer.getNumSpareNodes(0, 100), 100L);
+ assertEquals(retirer.getNumSpareNodes(0, 1), 0L);
+ assertEquals(retirer.getNumSpareNodes(0, 100), 98L);
assertEquals(retirer.getNumSpareNodes(1, 0), 0L);
assertEquals(retirer.getNumSpareNodes(1, 1), 0L);
- assertEquals(retirer.getNumSpareNodes(1, 2), 1L);
- assertEquals(retirer.getNumSpareNodes(43, 23), 18L);
+ assertEquals(retirer.getNumSpareNodes(1, 2), 0L);
+ assertEquals(retirer.getNumSpareNodes(43, 23), 21L);
}
@Test