[ https://issues.apache.org/activemq/browse/AMQ-1470?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Rob Davies resolved AMQ-1470. ----------------------------- Fix Version/s: 5.2.0 Resolution: Fixed Fixed applied in SVN revision 669512 > There is no way to cleanly shutdown ActiveMQ > -------------------------------------------- > > Key: AMQ-1470 > URL: https://issues.apache.org/activemq/browse/AMQ-1470 > Project: ActiveMQ > Issue Type: Improvement > Components: Connector, Test Cases, Transport > Affects Versions: 4.1.1 > Reporter: Aaron Digulla > Assignee: Rob Davies > Fix For: 5.2.0 > > > I need to test and build a highly reliable AMQ application. I'm using JUnit > for my test cases and Tomcat as webserver. > My problem is that after closing all connections and sessions, there are > still many threads hanging around. This makes it impossible to undeploy the > webapp in Tomcat and it makes test cases unreliable since I can't guarantee > that the environment is clean. > So far, I have identifier the following issues: > - If FailoverTransport hangs in oneway() because the AMQ server is not > running, there is no way to stop it. Sending the thread an interrupt will > only cause an endless loop (missing break in catch of InterruptedException > after "Waiting for transport to reconnect."). > - Even if I interrupt the thread, it's not sure what it will do next. It > might try to reconnect the next moment because I can't dispose the connection > because of a deadlock in ActiveMQConnection (see > http://www.nabble.com/Reliably-starting-and-stopping-of-a-producer-consumer-tf4600635s2354.html#a13229979). > - After fixing those two, I see two thread pools left: Scheduler.clockDaemon > and ActiveMQConnectionFactory.DEFAULT_CONNECTION_EXECUTOR. Both won't stop > running which means that there will be references to AMQ so Tomcat can't > undeploy the application. > I tried to call shutdownNow() on the executors which gets me halfway where I > need to be but now, the tests fail because when I try to create the next > connection after a shutdown, the executors are in an illegal state > (TERMINATED instead of RUNNING). My solution here was to kill the executors > and recreate them in my tests. > But there should be a better way to do this :-) -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.