diff options
Diffstat (limited to 'config')
-rw-r--r-- | config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java | 1 | ||||
-rw-r--r-- | config/src/main/java/com/yahoo/config/subscription/impl/JRTManagedConnectionPools.java | 9 |
2 files changed, 7 insertions, 3 deletions
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 2873855d1c2..3891d710fa3 100644 --- a/config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java +++ b/config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java @@ -319,6 +319,7 @@ public class ConfigSubscriber implements AutoCloseable { @Override public void close() { synchronized (monitor) { + if (state == State.CLOSED) return; state = State.CLOSED; } for (ConfigHandle<? extends ConfigInstance> h : subscriptionHandles) { diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/JRTManagedConnectionPools.java b/config/src/main/java/com/yahoo/config/subscription/impl/JRTManagedConnectionPools.java index 0a606416827..32d2d962e4d 100644 --- a/config/src/main/java/com/yahoo/config/subscription/impl/JRTManagedConnectionPools.java +++ b/config/src/main/java/com/yahoo/config/subscription/impl/JRTManagedConnectionPools.java @@ -29,7 +29,8 @@ public class JRTManagedConnectionPools { count = 0; } } - private Map<ConfigSourceSet, CountedPool> pools = new HashMap<>(); + + private final Map<ConfigSourceSet, CountedPool> pools = new HashMap<>(); public JRTConfigRequester acquire(ConfigSourceSet sourceSet, TimingValues timingValues) { CountedPool countedPool; @@ -43,12 +44,14 @@ public class JRTManagedConnectionPools { } return new JRTConfigRequester(sourceSet, countedPool.scheduler, countedPool.pool, timingValues); } + public synchronized void release(ConfigSourceSet sourceSet) { CountedPool countedPool; synchronized (pools) { countedPool = pools.get(sourceSet); - countedPool.count--; - if (countedPool.count > 0) return; + if (countedPool != null) + countedPool.count--; + if (countedPool == null || countedPool.count > 0) return; pools.remove(sourceSet); } |