aboutsummaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2019-08-22 15:36:57 +0200
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2019-08-22 15:37:33 +0200
commitc71895c36e1453550386434ce2e9a9637653e574 (patch)
tree615b1cfd44974b587955241ec54d155d4ca7b450 /config
parent5e6a6f708ea01f05b27795ca77fa79dc5d57a6aa (diff)
Close config subscriber after getting config
Diffstat (limited to 'config')
-rw-r--r--config/abi-spec.json4
-rwxr-xr-xconfig/src/main/java/com/yahoo/config/subscription/ConfigGetter.java16
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java3
3 files changed, 10 insertions, 13 deletions
diff --git a/config/abi-spec.json b/config/abi-spec.json
index f6ab43f2c9b..b60f9053642 100644
--- a/config/abi-spec.json
+++ b/config/abi-spec.json
@@ -189,7 +189,9 @@
},
"com.yahoo.config.subscription.ConfigSubscriber": {
"superClass": "java.lang.Object",
- "interfaces": [],
+ "interfaces": [
+ "java.lang.AutoCloseable"
+ ],
"attributes": [
"public"
],
diff --git a/config/src/main/java/com/yahoo/config/subscription/ConfigGetter.java b/config/src/main/java/com/yahoo/config/subscription/ConfigGetter.java
index e126b13388a..b2aa0147259 100755
--- a/config/src/main/java/com/yahoo/config/subscription/ConfigGetter.java
+++ b/config/src/main/java/com/yahoo/config/subscription/ConfigGetter.java
@@ -47,18 +47,12 @@ public class ConfigGetter<T extends ConfigInstance> {
* @return an instance of a config class
*/
public synchronized T getConfig(String configId) {
- ConfigSubscriber subscriber;
- ConfigHandle<T> h;
- if (source == null) {
- subscriber = new ConfigSubscriber();
- } else {
- subscriber = new ConfigSubscriber(source);
+ try (ConfigSubscriber subscriber =
+ source == null ? new ConfigSubscriber() : new ConfigSubscriber(source)) {
+ ConfigHandle<T> handle = subscriber.subscribe(clazz, configId);
+ subscriber.nextConfig();
+ return handle.getConfig();
}
- h = subscriber.subscribe(clazz, configId);
- subscriber.nextConfig();
- T ret = h.getConfig();
- subscriber.close();
- return ret;
}
/**
diff --git a/config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java b/config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java
index 83dc041ad4a..ae6f14ad59e 100644
--- a/config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java
+++ b/config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java
@@ -27,7 +27,7 @@ import static java.util.stream.Collectors.toList;
*
* @author vegardh
*/
-public class ConfigSubscriber {
+public class ConfigSubscriber implements AutoCloseable {
private static final Logger log = Logger.getLogger(ConfigSubscriber.class.getName());
private State state = State.OPEN;
@@ -316,6 +316,7 @@ public class ConfigSubscriber {
/**
* Closes all open {@link ConfigSubscription}s
*/
+ @Override
public void close() {
synchronized (monitor) {
state = State.CLOSED;