diff options
author | Jon Marius Venstad <jonmv@users.noreply.github.com> | 2022-05-02 21:08:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-02 21:08:17 +0200 |
commit | 6058f5f8d2ed19ca3c0461e7080680a093834823 (patch) | |
tree | 3e09032c623789406abfa2d42ea74b7064cb7087 /container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/SessionCache.java | |
parent | 04898b34190a3e3bb9d3053e11eb892bc48ff842 (diff) |
Revert "Jonmv/remove last controller jersey client [run-systemtest]"
Diffstat (limited to 'container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/SessionCache.java')
-rw-r--r-- | container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/SessionCache.java | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/SessionCache.java b/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/SessionCache.java index 3045247a6d3..91a3181cb68 100644 --- a/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/SessionCache.java +++ b/container-messagebus/src/main/java/com/yahoo/container/jdisc/messagebus/SessionCache.java @@ -29,7 +29,6 @@ import com.yahoo.messagebus.shared.SharedMessageBus; import com.yahoo.messagebus.shared.SharedSourceSession; import com.yahoo.vespa.config.content.DistributionConfig; import com.yahoo.vespa.config.content.LoadTypeConfig; -import com.yahoo.yolean.concurrent.Memoized; import java.util.HashMap; import java.util.Map; @@ -55,7 +54,9 @@ public final class SessionCache extends AbstractComponent { private static final Logger log = Logger.getLogger(SessionCache.class.getName()); - private final Memoized<SharedMessageBus, RuntimeException> messageBus; + private final Object monitor = new Object(); + private Supplier<SharedMessageBus> messageBuses; + private SharedMessageBus messageBus; private final Object intermediateLock = new Object(); private final Map<String, SharedIntermediateSession> intermediates = new HashMap<>(); @@ -95,18 +96,24 @@ public final class SessionCache extends AbstractComponent { public SessionCache(Supplier<NetworkMultiplexer> net, ContainerMbusConfig containerMbusConfig, MessagebusConfig messagebusConfig, Protocol protocol) { - this.messageBus = new Memoized<>(() -> createSharedMessageBus(net.get(), containerMbusConfig, messagebusConfig, protocol), - SharedMessageBus::release); + this.messageBuses = () -> createSharedMessageBus(net.get(), containerMbusConfig, messagebusConfig, protocol); } @Override public void deconstruct() { - messageBus.close(); + synchronized (monitor) { + messageBuses = () -> { throw new IllegalStateException("Session cache already deconstructed"); }; + + if (messageBus != null) + messageBus.release(); + } } // Lazily create shared message bus. private SharedMessageBus bus() { - return messageBus.get(); + synchronized (monitor) { + return messageBus = messageBus != null ? messageBus : messageBuses.get(); + } } private static SharedMessageBus createSharedMessageBus(NetworkMultiplexer net, |