aboutsummaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
Diffstat (limited to 'config')
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java1
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/impl/JRTManagedConnectionPools.java9
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);
}