activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Aaron Digulla (JIRA)" <j...@apache.org>
Subject [jira] Created: (AMQ-1470) There is no way to cleanly shutdown ActiveMQ
Date Thu, 18 Oct 2007 13:44:23 GMT
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


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.


Mime
View raw message