diff --git a/activemq-broker/src/main/java/org/apache/activemq/transport/vm/VMTransport.java b/activemq-broker/src/main/java/org/apache/activemq/transport/vm/VMTransport.java index 5f75a3c7a1..9ef7860ecb 100644 --- a/activemq-broker/src/main/java/org/apache/activemq/transport/vm/VMTransport.java +++ b/activemq-broker/src/main/java/org/apache/activemq/transport/vm/VMTransport.java @@ -35,6 +35,7 @@ import org.apache.activemq.transport.ResponseCallback; import org.apache.activemq.transport.Transport; import org.apache.activemq.transport.TransportDisposedIOException; import org.apache.activemq.transport.TransportListener; +import org.apache.activemq.util.IOExceptionSupport; import org.apache.activemq.wireformat.WireFormat; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -270,7 +271,14 @@ public class VMTransport implements Transport, Task { Object command = mq.poll(); if (command != null && !disposed.get()) { - tl.onCommand(command); + try { + tl.onCommand(command); + } catch (Exception e) { + try { + peer.transportListener.onException(IOExceptionSupport.create(e)); + } catch (Exception ignore) { + } + } return !mq.isEmpty() && !disposed.get(); } else { if(disposed.get()) { diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/embedded/ThreadExplorer.java b/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/embedded/ThreadExplorer.java index eab5fd148f..1d6e204dac 100644 --- a/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/embedded/ThreadExplorer.java +++ b/activemq-unit-tests/src/test/java/org/apache/activemq/bugs/embedded/ThreadExplorer.java @@ -137,7 +137,7 @@ public class ThreadExplorer if (thread != null) { out.append("* [" + thread.getName() + "] " + (thread.isDaemon() ? "(Daemon)" : "") - + " Group: " + thread.getThreadGroup().getName() + "\n"); + + " Group: " + (thread.getThreadGroup() != null ? thread.getThreadGroup().getName() : "") + "\n"); } else {