activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Scott Emmons (JIRA)" <>
Subject [jira] Reopened: (AMQ-1447) Broker cannot shutdown cleanly due to hanging non-daemon threads.
Date Fri, 19 Mar 2010 22:11:45 GMT


Scott Emmons reopened AMQ-1447:

This still appears to be an issue in 5.3.0. I am using activemq-core-5.3.0.jar, but ActiveMQ
Transport threads are not daemon:

"ActiveMQ Transport: tcp://" prio=1 tid=0x6a651420 nid=0x6d62
runnable [0x69ef8000..0x69ef9000]

Unfortunately this results in not being able to bring Tomcat application servers down gracefully.

Note that the ActiveMQ Scheduler thread is setup correctly, so this appears specific to the
Transport code:

"ActiveMQ Scheduler" daemon prio=1 tid=0x0973deb8 nid=0x6d68 in Object.wait() [0x697fe000..0x697fed80]

> Broker cannot shutdown cleanly due to hanging non-daemon threads.
> -----------------------------------------------------------------
>                 Key: AMQ-1447
>                 URL:
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 4.1.1
>         Environment: Windows XP, JDK 1.4.2
>            Reporter: William Lam
>             Fix For: 5.3.0
> Running with an embedded broker inside an application, the application failed to shutdown
cleanly due to some hanging ActiveMQ non-daemon threads, sample stacktace as below.
> "ActiveMQ Transport: tcp://oat-dualcore113/" prio=5 tid=0x041b8658
nid=0x12f4 in Object.wait() [6c7f000..6c7fdc0]
> 	at java.lang.Object.wait(Native Method)
> 	- waiting on <0x168c0490> (a
> 	at java.lang.Object.wait(
> 	at
> 	- locked <0x168c0490> (a
> 	at
> 	at
> 	at$2.onCommand(
> 	at org.apache.activemq.transport.ResponseCorrelator.onCommand(
> 	at org.apache.activemq.transport.TransportFilter.onCommand(
> 	at org.apache.activemq.transport.WireFormatNegotiator.onCommand(
> 	at org.apache.activemq.transport.InactivityMonitor.onCommand(
> 	at org.apache.activemq.transport.TransportSupport.doConsume(
> 	at
> 	at
> It may be caused by other invalid broker connection attempts (not sure how) and TcpTransport
is waiting for a successful connection to the remote broker.  
> Various ways to workaround that failed,
> - TcpTransport is not being exposed to the application by any means (unlike ActiveMQConnection
- even though it is package not public)
> - no means to set the TcpTransport as daemon since it is set on the constructor
> Have to put in some 'custom' code in the application to find all 'ActiveMQ' non-daemon
threads and stop() them.  Note interrupt() won't work since InterruptedException was ignored.
> I am using the default multicast for broker discovery  (tried that with other multicast
address, same problem)
>     <networkConnectors>
>       <networkConnector name="default" uri="multicast://default" failover="false"/>
>     </networkConnectors>

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message