aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-01-07 15:06:17 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2022-01-07 15:06:17 +0100
commit48f8a7c32a5d7b575470500a3c90dfea561b6091 (patch)
tree2c7cae1f45492137f73facf441509ef96bde78b2
parentcdb6a8521b56ff30ff8abda7b5342986df977f2e (diff)
Use a daemon thread have wait for shutdown to complete.
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusClient.java8
-rw-r--r--container-messagebus/src/main/java/com/yahoo/messagebus/jdisc/MbusServer.java4
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java2
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);