You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Scott Emmons (JIRA)" <ji...@apache.org> on 2010/03/19 23:11:45 UTC

[jira] Issue Comment Edited: (AMQ-1447) Broker cannot shutdown cleanly due to hanging non-daemon threads.

    [ https://issues.apache.org/activemq/browse/AMQ-1447?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=58343#action_58343 ] 

Scott Emmons edited comment on AMQ-1447 at 3/19/10 10:10 PM:
-------------------------------------------------------------

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://scotte.mygazoo.com/127.0.0.1:61616" 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]

[NOTE: Environment is linux 2.6.31-19-generic-pae #56-Ubuntu SMP]

      was (Author: scotte):
    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://scotte.mygazoo.com/127.0.0.1:61616" 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: https://issues.apache.org/activemq/browse/AMQ-1447
>             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/172.17.0.113:61616" prio=5 tid=0x041b8658 nid=0x12f4 in Object.wait() [6c7f000..6c7fdc0]
> 	at java.lang.Object.wait(Native Method)
> 	- waiting on <0x168c0490> (a edu.emory.mathcs.backport.java.util.concurrent.CountDownLatch)
> 	at java.lang.Object.wait(Object.java:429)
> 	at edu.emory.mathcs.backport.java.util.concurrent.CountDownLatch.await(CountDownLatch.java:178)
> 	- locked <0x168c0490> (a edu.emory.mathcs.backport.java.util.concurrent.CountDownLatch)
> 	at org.apache.activemq.network.DemandForwardingBridgeSupport.waitStarted(DemandForwardingBridgeSupport.java:842)
> 	at org.apache.activemq.network.DemandForwardingBridgeSupport.serviceRemoteCommand(DemandForwardingBridgeSupport.java:332)
> 	at org.apache.activemq.network.DemandForwardingBridgeSupport$2.onCommand(DemandForwardingBridgeSupport.java:131)
> 	at org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:95)
> 	at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:65)
> 	at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:133)
> 	at org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:122)
> 	at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84)
> 	at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:137)
> 	at java.lang.Thread.run(Thread.java:534)
> 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.