summaryrefslogtreecommitdiffstats
path: root/vdslib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-03-11 15:53:02 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2021-03-11 15:53:02 +0100
commit07accb9f7c8860089b3286d3e286f6ea0f3094ab (patch)
tree40a616882edc98818d823a33bb9360f0b0269be5 /vdslib
parent0ea817a6c5490f7251f89c0e743d20270925c469 (diff)
GC use of NodeState.getDiskCount and NodeState.getDiskStates.
Diffstat (limited to 'vdslib')
-rw-r--r--vdslib/src/main/java/com/yahoo/vdslib/distribution/Distribution.java35
-rw-r--r--vdslib/src/main/java/com/yahoo/vdslib/state/NodeState.java3
-rw-r--r--vdslib/src/test/java/com/yahoo/vdslib/distribution/DistributionTestFactory.java34
-rw-r--r--vdslib/src/test/java/com/yahoo/vdslib/state/NodeStateTestCase.java36
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));