diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-01-07 15:06:17 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2022-01-07 15:06:17 +0100 |
commit | 48f8a7c32a5d7b575470500a3c90dfea561b6091 (patch) | |
tree | 2c7cae1f45492137f73facf441509ef96bde78b2 | |
parent | cdb6a8521b56ff30ff8abda7b5342986df977f2e (diff) |
Use a daemon thread have wait for shutdown to complete.
3 files changed, 10 insertions, 4 deletions
diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusClient.java b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusClient.java index 7fa294422d6..31453a78dfe 100644 --- a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusClient.java +++ b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusClient.java @@ -43,6 +43,7 @@ public final class MbusClient extends AbstractResource implements ClientProvider this.session = session; this.sessionReference = session.refer(this); thread = new Thread(new SenderTask(), "mbus-client-" + threadId.getAndIncrement()); + thread.setDaemon(true); } @Override @@ -79,6 +80,11 @@ public final class MbusClient extends AbstractResource implements ClientProvider log.log(Level.FINE, "Destroying message bus client."); sessionReference.close(); done = true; + try { + thread.join(); + } catch (InterruptedException e) { + + } } @Override @@ -121,7 +127,7 @@ public final class MbusClient extends AbstractResource implements ClientProvider if (error == null) { return true; } - if (error.isFatal()) { + if (error.isFatal() || done) { final Reply reply = new EmptyReply(); reply.swapState(request.getMessage()); reply.addError(error); diff --git a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusServer.java b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusServer.java index e7b1fc3e71d..084a5f82268 100644 --- a/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusServer.java +++ b/container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusServer.java @@ -75,8 +75,8 @@ public final class MbusServer extends AbstractResource implements ServerProvider return; } if (state == State.STOPPED) { - // We might need to detect requests originating from the same JVM, as they nede to fail fast - // As they are holding references to the container preventing proper shutdown. + // We might need to detect requests originating from the same JVM, as they need to fail fast + // as they are holding references to the container preventing proper shutdown. dispatchErrorReply(msg, ErrorCode.SESSION_BUSY, "MBusServer has been closed."); return; } diff --git a/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java b/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java index 085978375a6..8611801b9a9 100644 --- a/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java +++ b/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java @@ -59,7 +59,7 @@ import java.util.logging.Logger; */ public class MessageBus implements ConfigHandler, NetworkOwner, MessageHandler, ReplyHandler { - private static Logger log = Logger.getLogger(MessageBus.class.getName()); + private final static Logger log = Logger.getLogger(MessageBus.class.getName()); private final AtomicBoolean destroyed = new AtomicBoolean(false); private final ProtocolRepository protocolRepository = new ProtocolRepository(); private final AtomicReference<Map<String, RoutingTable>> tablesRef = new AtomicReference<>(null); |