I've raised a JIRA and made a fix against the AMQP 0-8/9/9-1/10 client which gets rid of the ack flusher timer:
https://issues.apache.org/jira/browse/QPID-6583 -- Rob On 11 June 2015 at 11:15, Tomohisa Igarashi <[email protected]> wrote: > Hi Rob, > > Thank you for the immediate and clear response! > > I agree it doesn't cause a functional problem, just a cleanup issue on > client shutdown. > I just found qpid-jms-client and it looks like a successor of the one > in qpid-client. Are you OK with filing a JIRA for this issue on > QPIDJMS? > (I also tried with qpid-jms-client 0.2.0 and same result) > > Thanks, > Tomo > > > -- > IGARASHI Tomohisa mailto:[email protected] > > > On Thu, Jun 11, 2015 at 4:48 PM, Rob Godfrey <[email protected]> wrote: >> Hi Tomo, >> >> looking at the code (AMQSession_0_10.java), it seems that the >> ack-flusher is created here (line 75): >> >> private static Timer timer = new Timer("ack-flusher", true); >> >> That is a single (java.util.)Timer is shared across all sessions on >> *all* connections - the timer is not connection specific. Since it is >> shared by all connections, it is not cancel()led when a connection is >> close()ed. The Timer is created with isDaemon being true, so the fact >> that the thread is never stopped wouldn't normally be an issue. >> >> It would need a code change on our side to change this behaviour. >> >> -- Rob >> >> On 11 June 2015 at 09:30, Tomohisa Igarashi <[email protected]> wrote: >>> Hi, >>> >>> When I run Qpid Java client from exec-maven-plugin, I get this warning >>> complaining about remaining ack-flusher thread: >>> >>> =================== >>> [WARNING] thread >>> Thread[ack-flusher,5,org.switchyard.quickstarts.camel.amqp.binding.QpidClient] >>> was interrupted but is still alive after waiting at least 15000msecs >>> [WARNING] thread >>> Thread[ack-flusher,5,org.switchyard.quickstarts.camel.amqp.binding.QpidClient] >>> will linger despite being asked to die via interruption >>> [WARNING] NOTE: 1 thread(s) did not finish despite being asked to via >>> interruption. This is not a problem with exec:java, it is a problem >>> with the running code. Although not serious, it should be remedied. >>> [WARNING] Couldn't destroy threadgroup >>> org.codehaus.mojo.exec.ExecJavaMojo$IsolatedThreadGroup[name=org.switchyard.quickstarts.camel.amqp.binding.QpidClient,maxpri=10] >>> java.lang.IllegalThreadStateException >>> =================== >>> >>> So ack-flusher thread is not stopped even after connection is closed. >>> Is there a way to stop it safely? >>> >>> Whole client code is here: >>> https://github.com/igarashitm/switchyard/blob/master/quickstarts/camel-amqp-binding/src/test/java/org/switchyard/quickstarts/camel/amqp/binding/QpidClient.java >>> >>> I tried adding connection.close() on this code with qpid-client 0.32, >>> but I got same warning. >>> >>> Thanks, >>> Tomo >>> >>> -- >>> IGARASHI Tomohisa mailto:[email protected] >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [email protected] >>> For additional commands, e-mail: [email protected] >>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
