diff options
author | Jon Bratseth <bratseth@verizonmedia.com> | 2019-05-18 15:56:59 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@verizonmedia.com> | 2019-05-18 15:56:59 +0200 |
commit | c006a2c66cf7875d0adbe7eb2a5476fb32095ec0 (patch) | |
tree | 53f9ca2eec30759e0eb35c5e68b404797d69a6df /node-repository | |
parent | fddfaf0d3a98b8ea389e032c8e6fc66a0404f542 (diff) |
Prioritize nodes with slow disk
Diffstat (limited to 'node-repository')
3 files changed, 14 insertions, 7 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeResourceComparator.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeResourceComparator.java index 4ed7e063439..51174d42d4b 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeResourceComparator.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeResourceComparator.java @@ -22,7 +22,6 @@ public class NodeResourceComparator { private static class MemoryDiskCpu implements Comparator<NodeResources> { - // TODO: Take disk into account @Override public int compare(NodeResources a, NodeResources b) { if (a.memoryGb() > b.memoryGb()) return 1; @@ -31,6 +30,13 @@ public class NodeResourceComparator { if (a.diskGb() < b.diskGb()) return -1; if (a.vcpu() > b.vcpu()) return 1; if (a.vcpu() < b.vcpu()) return -1; + return compare(a.diskSpeed(), b.diskSpeed()); + } + + private int compare(NodeResources.DiskSpeed a, NodeResources.DiskSpeed b) { + if (a == b) return 0; + if (a == NodeResources.DiskSpeed.slow) return -1; + if (b == NodeResources.DiskSpeed.slow) return 1; return 0; } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/PrioritizableNode.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/PrioritizableNode.java index d1a79d0e28d..57b41786501 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/PrioritizableNode.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/PrioritizableNode.java @@ -75,12 +75,8 @@ class PrioritizableNode implements Comparable<PrioritizableNode> { if (this.node.state().equals(Node.State.ready) && !other.node.state().equals(Node.State.ready)) return -1; if (other.node.state().equals(Node.State.ready) && !this.node.state().equals(Node.State.ready)) return 1; - // The node state should be equal here - if (!this.node.state().equals(other.node.state())) { - throw new RuntimeException( - String.format("Error during node priority comparison. Node states are not equal as expected. Got %s and %s.", - this.node.state(), other.node.state())); - } + if ( ! this.node.state().equals(other.node.state())) + throw new IllegalStateException("Nodes " + this.node + " and " + other.node + " have different states"); // Choose exact flavor if (this.preferredOnFlavor && !other.preferredOnFlavor) return -1; diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ResourceCapacityTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ResourceCapacityTest.java index f73b0127d8a..c2f2e6efda0 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ResourceCapacityTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/ResourceCapacityTest.java @@ -72,6 +72,11 @@ public class ResourceCapacityTest { assertEquals(1, compare(d3DiskFlavor.resources(), d3CPUFlavor.resources())); assertEquals(-1, compare(d3CPUFlavor.resources(), d3MemFlavor.resources())); assertEquals(1, compare(d3MemFlavor.resources(), d3DiskFlavor.resources())); + + assertEquals(-1, compare(new NodeResources(1, 2, 3, NodeResources.DiskSpeed.slow), + new NodeResources(1, 2, 3, NodeResources.DiskSpeed.fast))); + assertEquals(1, compare(new NodeResources(1, 2, 3, NodeResources.DiskSpeed.fast), + new NodeResources(1, 2, 3, NodeResources.DiskSpeed.slow))); } private int compare(NodeResources a, NodeResources b) { |