diff options
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); |