From c71895c36e1453550386434ce2e9a9637653e574 Mon Sep 17 00:00:00 2001 From: Bjørn Christian Seime Date: Thu, 22 Aug 2019 15:36:57 +0200 Subject: Close config subscriber after getting config --- config/abi-spec.json | 4 +++- .../java/com/yahoo/config/subscription/ConfigGetter.java | 16 +++++----------- .../com/yahoo/config/subscription/ConfigSubscriber.java | 3 ++- 3 files changed, 10 insertions(+), 13 deletions(-) (limited to 'config') 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 { * @return an instance of a config class */ public synchronized T getConfig(String configId) { - ConfigSubscriber subscriber; - ConfigHandle h; - if (source == null) { - subscriber = new ConfigSubscriber(); - } else { - subscriber = new ConfigSubscriber(source); + try (ConfigSubscriber subscriber = + source == null ? new ConfigSubscriber() : new ConfigSubscriber(source)) { + ConfigHandle 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; -- cgit v1.2.3