activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rob Davies (JIRA)" <>
Subject [jira] Assigned: (AMQ-1470) There is no way to cleanly shutdown ActiveMQ
Date Thu, 19 Jun 2008 15:25:00 GMT


Rob Davies reassigned AMQ-1470:

    Assignee: Rob Davies

> There is no way to cleanly shutdown ActiveMQ
> --------------------------------------------
>                 Key: AMQ-1470
>                 URL:
>             Project: ActiveMQ
>          Issue Type: Improvement
>          Components: Connector, Test Cases, Transport
>    Affects Versions: 4.1.1
>            Reporter: Aaron Digulla
>            Assignee: Rob Davies
> 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
> - 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.

View raw message