summaryrefslogtreecommitdiffstats
path: root/vdslib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2019-05-16 12:05:44 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2019-05-16 12:05:44 +0200
commitba6711be92d89a0191eaa45400c75f7a2b3dfb46 (patch)
tree3de958074425cb29d243026ad77bb113d03eb1f2 /vdslib
parentea1409bfa056576f7afa664553e58a7062afe542 (diff)
- Use double checked locking to ensure that we do not create Policies that we forget to destroy.
- Catch exceptions and close/destroy when necessary.
Diffstat (limited to 'vdslib')
-rw-r--r--vdslib/src/main/java/com/yahoo/vdslib/distribution/Distribution.java15
1 files changed, 10 insertions, 5 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 0063011e41c..404ec357e93 100644
--- a/vdslib/src/main/java/com/yahoo/vdslib/distribution/Distribution.java
+++ b/vdslib/src/main/java/com/yahoo/vdslib/distribution/Distribution.java
@@ -108,8 +108,13 @@ public class Distribution {
distributionBitMasks[i] = mask;
mask = (mask << 1) | 1;
}
- configSub = new ConfigSubscriber();
- configSub.subscribe(configSubscriber, StorDistributionConfig.class, configId);
+ try {
+ configSub = new ConfigSubscriber();
+ configSub.subscribe(configSubscriber, StorDistributionConfig.class, configId);
+ } catch (Throwable e) {
+ close();
+ throw e;
+ }
}
public Distribution(StorDistributionConfig config) {
@@ -146,7 +151,7 @@ public class Distribution {
return seed;
}
- private class ScoredGroup implements Comparable<ScoredGroup> {
+ private static class ScoredGroup implements Comparable<ScoredGroup> {
Group group;
double score;
@@ -158,7 +163,7 @@ public class Distribution {
return Double.valueOf(o.score).compareTo(score);
}
}
- private class ScoredNode {
+ private static class ScoredNode {
int index;
int reliability;
double score;
@@ -205,7 +210,7 @@ public class Distribution {
}
return getIdealDistributorGroup(bucket, clusterState, results.first().group, redundancyArray[0]);
}
- private class ResultGroup implements Comparable<ResultGroup> {
+ private static class ResultGroup implements Comparable<ResultGroup> {
Group group;
int redundancy;