diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2019-05-16 12:05:44 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2019-05-16 12:05:44 +0200 |
commit | ba6711be92d89a0191eaa45400c75f7a2b3dfb46 (patch) | |
tree | 3de958074425cb29d243026ad77bb113d03eb1f2 /vdslib | |
parent | ea1409bfa056576f7afa664553e58a7062afe542 (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.java | 15 |
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; |