diff options
Diffstat (limited to 'vdslib/src')
4 files changed, 2 insertions, 106 deletions
diff --git a/vdslib/src/main/java/com/yahoo/vdslib/distribution/Distribution.java b/vdslib/src/main/java/com/yahoo/vdslib/distribution/Distribution.java index 0a2d79b6f2a..81e0e3e86c6 100644 --- a/vdslib/src/main/java/com/yahoo/vdslib/distribution/Distribution.java +++ b/vdslib/src/main/java/com/yahoo/vdslib/distribution/Distribution.java @@ -4,11 +4,9 @@ package com.yahoo.vdslib.distribution; import com.yahoo.collections.BobHash; import com.yahoo.config.subscription.ConfigSubscriber; import com.yahoo.vdslib.state.ClusterState; -import com.yahoo.vdslib.state.DiskState; import com.yahoo.vdslib.state.Node; import com.yahoo.vdslib.state.NodeState; import com.yahoo.vdslib.state.NodeType; -import com.yahoo.vdslib.state.State; import com.yahoo.vespa.config.content.DistributionConfig; import com.yahoo.vespa.config.content.StorDistributionConfig; import com.yahoo.document.BucketId; @@ -352,39 +350,6 @@ public class Distribution { int initval = (1664525 * nodeIndex + 0xdeadbeef); return BobHash.hash(ordered, initval); } - /** - * This function should only depend on disk distribution and node index. It is - * assumed that any other change, for instance in hierarchical grouping, does - * not change disk index on disk. - */ - int getIdealDisk(NodeState nodeState, int nodeIndex, BucketId bucket) { - // Catch special cases in a single if statement - if (nodeState.getDiskCount() < 2) { - if (nodeState.getDiskCount() == 1) { - return 0; - } - throw new IllegalArgumentException( - "Cannot pick ideal disk without knowing disk count."); - } - - RandomGen randomizer = new RandomGen(getDiskSeed(bucket, nodeIndex)); - - double maxScore = 0.0; - int idealDisk = 0xffff; - for (int i=0, n=nodeState.getDiskCount(); i<n; ++i) { - double score = randomizer.nextDouble(); - DiskState diskState = (nodeState.getDiskState(i)); - if (diskState.getCapacity() != 1.0) { - score = Math.pow(score, - 1.0 / diskState.getCapacity()); - } - if (score > maxScore) { - maxScore = score; - idealDisk = i; - } - } - return idealDisk; - } List<Integer> getIdealStorageNodes(ClusterState clusterState, BucketId bucket, String upStates) throws TooFewBucketBitsInUseException { List<Integer> resultNodes = new ArrayList<>(); diff --git a/vdslib/src/main/java/com/yahoo/vdslib/state/NodeState.java b/vdslib/src/main/java/com/yahoo/vdslib/state/NodeState.java index bdc30f0b230..e3b65c88f59 100644 --- a/vdslib/src/main/java/com/yahoo/vdslib/state/NodeState.java +++ b/vdslib/src/main/java/com/yahoo/vdslib/state/NodeState.java @@ -200,9 +200,6 @@ public class NodeState implements Cloneable { public int getMinUsedBits() { return minUsedBits; } public long getStartTimestamp() { return startTimestamp; } - public int getDiskCount() { return diskStates.size(); } - public List<DiskState> getDiskStates() { return Collections.unmodifiableList(diskStates); } - public String toString() { return toString(false); } public String toString(boolean compact) { diff --git a/vdslib/src/test/java/com/yahoo/vdslib/distribution/DistributionTestFactory.java b/vdslib/src/test/java/com/yahoo/vdslib/distribution/DistributionTestFactory.java index 7a6fb13bcd4..ed2104e03bc 100644 --- a/vdslib/src/test/java/com/yahoo/vdslib/distribution/DistributionTestFactory.java +++ b/vdslib/src/test/java/com/yahoo/vdslib/distribution/DistributionTestFactory.java @@ -37,13 +37,11 @@ public class DistributionTestFactory extends CrossPlatformTestFactory { static public class Test { private BucketId bucket; private List<Integer> nodes; - private List<Integer> disks; private Failure failure; public Test(BucketId bucket) { this.bucket = bucket; nodes = new ArrayList<>(); - disks = new ArrayList<>(); failure = Failure.NONE; } @@ -58,7 +56,7 @@ public class DistributionTestFactory extends CrossPlatformTestFactory { @Override public int hashCode() { - return java.util.Objects.hash(bucket, nodes, disks); + return java.util.Objects.hash(bucket, nodes); } public String toString() { @@ -79,16 +77,6 @@ public class DistributionTestFactory extends CrossPlatformTestFactory { public List<Integer> getNodes() { return nodes; } - public List<Integer> getDisks() { - return disks; - } - public Integer getDiskForNode(int node) { - for (int i=0; i<nodes.size(); ++i) { - if (nodes.get(i) == node) return disks.get(i); - } - fail("Node " + node + " is not in use: " + toString()); - throw new IllegalStateException("Control should not reach here"); - } public Test assertFailure(Failure f) { assertEquals(f, failure); @@ -176,12 +164,6 @@ public class DistributionTestFactory extends CrossPlatformTestFactory { } else { for (int i : d.getIdealStorageNodes(state, bucket, upStates)) { t.nodes.add(i); - NodeState ns = state.getNodeState(new Node(nodeType, i)); - if (ns.getDiskCount() != 0) { - t.disks.add(d.getIdealDisk(ns, i, bucket)); - } else { - t.disks.add(-1); - } } } } catch (Distribution.TooFewBucketBitsInUseException e) { @@ -212,17 +194,11 @@ public class DistributionTestFactory extends CrossPlatformTestFactory { for (int i : t.nodes) { nodes.put(i); } - JSONArray disks = new JSONArray(); - for (int i : t.disks) { - nodes.put(i); - } + JSONObject testResult = new JSONObject() .put("bucket", Long.toHexString(t.bucket.getId())) .put("nodes", nodes) .put("failure", t.failure.toString()); - if (nodeType == NodeType.STORAGE) { - testResult.put("disks", disks); - } results.put(testResult); } test.put("result", results); @@ -247,12 +223,6 @@ public class DistributionTestFactory extends CrossPlatformTestFactory { t.nodes.add(nodes.getInt(j)); } } - if (nodeType == NodeType.STORAGE) { - JSONArray disks = result.getJSONArray("disks"); - for (int j=0; j<disks.length(); ++j) { - t.disks.add(disks.getInt(j)); - } - } t.failure = Failure.valueOf(result.getString("failure")); this.results.add(t); } diff --git a/vdslib/src/test/java/com/yahoo/vdslib/state/NodeStateTestCase.java b/vdslib/src/test/java/com/yahoo/vdslib/state/NodeStateTestCase.java index d2caac47d41..f217e2fef4e 100644 --- a/vdslib/src/test/java/com/yahoo/vdslib/state/NodeStateTestCase.java +++ b/vdslib/src/test/java/com/yahoo/vdslib/state/NodeStateTestCase.java @@ -42,42 +42,6 @@ public class NodeStateTestCase { } @Test - public void testDiskState() throws ParseException { - NodeState ns = NodeState.deserialize(NodeType.STORAGE, "s:m"); - assertEquals(new DiskState(State.UP, "", 1), ns.getDiskState(0)); - assertEquals(new DiskState(State.UP, "", 1), ns.getDiskState(1)); - assertEquals(new DiskState(State.UP, "", 1), ns.getDiskState(100)); - - ns.setDiskCount(2).setDiskState(1, new DiskState(State.DOWN, "bad disk", 1)); - assertEquals(new DiskState(State.UP, "", 1), ns.getDiskState(0)); - assertEquals(new DiskState(State.DOWN, "bad disk", 1), ns.getDiskState(1)); - - List<DiskState> diskStates = ns.getDiskStates(); - assertEquals(2, diskStates.size()); - for (int i=0; i<diskStates.size(); i++) { - DiskState diskState = diskStates.get(i); - if (i==1) { - assertEquals(new DiskState(State.DOWN, "bad disk", 1), diskState); - } else { - assertEquals(new DiskState(State.UP, "", 1), diskState); - } - } - - try { - NodeState.deserialize(NodeType.STORAGE, "s:m").setDiskCount(-1); - assertTrue("Should fail", false); - } catch (Exception e) {} - try { - NodeState.deserialize(NodeType.STORAGE, "s:m").setDiskState(1, new DiskState(State.DOWN, "bad disk", 1)); - assertTrue("Should fail", false); - } catch (Exception e) {} - try { - NodeState.deserialize(NodeType.STORAGE, "s:m").setDiskCount(2).setDiskState(1, new DiskState(State.DOWN, "bad disk", 1)).getDiskState(100); - assertTrue("Should fail", false); - } catch (Exception e) {} - } - - @Test public void testSerialization() throws ParseException { NodeState ns = new NodeState(NodeType.STORAGE, State.MAINTENANCE); assertEquals("s:m", ns.serialize(false)); |