From 7dde0ab9f6d19e25d55f1b1b4798f83b3ba6592d Mon Sep 17 00:00:00 2001 From: jonmv Date: Thu, 30 Nov 2023 09:49:39 +0100 Subject: Add some warnings for unexpected scenarios --- .../src/main/java/com/yahoo/messagebus/jdisc/MbusServer.java | 3 +++ .../java/com/yahoo/docproc/jdisc/DocumentProcessingHandler.java | 6 +++++- jrt/src/com/yahoo/jrt/TransportThread.java | 3 +++ 3 files changed, 11 insertions(+), 1 deletion(-) 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 4c21489ded2..42fbec7711d 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 @@ -67,6 +67,8 @@ public final class MbusServer extends AbstractResource implements ServerProvider @Override protected void destroy() { log.log(Level.INFO, "Destroying message bus server: " + session.name()); + if (runState.get() == State.RUNNING) + log.log(Level.WARNING, "Message bus server destroyed before being disconnected: " + session.name()); runState.set(State.STOPPED); sessionReference.close(); } @@ -79,6 +81,7 @@ public final class MbusServer extends AbstractResource implements ServerProvider return; } if (state == State.STOPPED) { + log.log(Level.WARNING, "Message bus server received message after being stopped: " + session.name()); dispatchErrorReply(msg, ErrorCode.NETWORK_SHUTDOWN, "MBusServer has been closed."); return; } diff --git a/docproc/src/main/java/com/yahoo/docproc/jdisc/DocumentProcessingHandler.java b/docproc/src/main/java/com/yahoo/docproc/jdisc/DocumentProcessingHandler.java index e686fe6254f..73d72aabcb9 100644 --- a/docproc/src/main/java/com/yahoo/docproc/jdisc/DocumentProcessingHandler.java +++ b/docproc/src/main/java/com/yahoo/docproc/jdisc/DocumentProcessingHandler.java @@ -116,7 +116,11 @@ public class DocumentProcessingHandler extends AbstractRequestHandler { @Override protected void destroy() { laterExecutor.shutdown(); - docprocServiceRegistry.allComponents().forEach(docprocService -> docprocService.deconstruct()); + if ( ! laterExecutor.getQueue().isEmpty()) { + // This should not happen, as container should keep this alive until all requests are served. + log.log(Level.SEVERE, "Docproc laterExecutor queue not empty on shutdown, " + laterExecutor.getQueue().size() + " tasks discarded"); + } + docprocServiceRegistry.allComponents().forEach(DocprocService::deconstruct); } public ComponentRegistry getDocprocServiceRegistry() { diff --git a/jrt/src/com/yahoo/jrt/TransportThread.java b/jrt/src/com/yahoo/jrt/TransportThread.java index 68b7c23b36b..870d1ce7adc 100644 --- a/jrt/src/com/yahoo/jrt/TransportThread.java +++ b/jrt/src/com/yahoo/jrt/TransportThread.java @@ -296,6 +296,9 @@ public class TransportThread { */ public TransportThread sync() { SyncCmd cmd = new SyncCmd(); + if (Thread.currentThread() == thread) { + log.log(Level.WARNING, "Attempting to sync " + thread + " with itself, which will deadlock"); + } if (postCommand(cmd)) { cmd.waitDone(); } else { -- cgit v1.2.3