summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@verizonmedia.com>2019-05-20 20:05:27 +0200
committerJon Bratseth <bratseth@verizonmedia.com>2019-05-20 20:05:27 +0200
commitcaf2bce0ba7d170b253ea6f353a3c2cf49fb5382 (patch)
tree034976d5ec56727f1c362df30c164cc7b7d4c90e /node-repository
parenta53a8aabdf5c25447a28225097e9ce79384939bd (diff)
Handle existing incorrect disk speed in allocations
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/DockerHostCapacity.java10
1 files changed, 7 insertions, 3 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/DockerHostCapacity.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/DockerHostCapacity.java
index bec4af3e426..9d8bc047862 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/DockerHostCapacity.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/DockerHostCapacity.java
@@ -125,10 +125,14 @@ public class DockerHostCapacity {
// Only hosts have free capacity
if ( ! dockerHost.type().equals(NodeType.host)) return new NodeResources(0, 0, 0);
+ // Subtract used resources without taking disk speed into account since existing allocations grandfathered in
+ // may not use reflect the actual disk speed (as of May 2019). This (the 3 diskSpeed assignments below)
+ // can be removed when all node allocations accurately reflect the true host disk speed
return allNodes.childrenOf(dockerHost).asList().stream()
- .filter(container -> !(includeInactive && isInactiveOrRetired(container)))
- .map(host -> host.flavor().resources())
- .reduce(dockerHost.flavor().resources(), NodeResources::subtract);
+ .filter(node -> !(includeInactive && isInactiveOrRetired(node)))
+ .map(node -> node.flavor().resources().withDiskSpeed(NodeResources.DiskSpeed.any))
+ .reduce(dockerHost.flavor().resources().withDiskSpeed(NodeResources.DiskSpeed.any), NodeResources::subtract)
+ .withDiskSpeed(dockerHost.flavor().resources().diskSpeed());
}
private boolean isInactiveOrRetired(Node node) {