I've fixed this for the next release - https://issues.apache.org/jira/browse/CXF-8205
Colm. On Wed, Jan 15, 2020 at 5:25 PM Colm O hEigeartaigh <[email protected]> wrote: > Hi, > > Yes I think this is a reasonable change. Can you submit a pull request? > Perhaps the running boolean should switch to AtomicBoolean as well. > > Colm. > > On Tue, Jan 14, 2020 at 1:07 PM Tyla, BHP (Björn) <[email protected]> > wrote: > >> Hi, >> >> I'm using CXF 3.4.0 in a Spring 5.2 application with an ActiveMQ middle >> ware. >> On application shutdown I see 2 warnings. Looking at the >> PollingMessageListenerContainer code I noticed that when the >> consumer/session is closed (and thus a null message is returned from >> consumer.receive) the next step (session.getTransacted) fails and produces >> the result below. >> Why is the session.getTransacted not within the message != null branch? >> >> Regards >> Bjorn >> >> org.apache.cxf.transport.jms.util.PollingMessageListenerContainer$Poller:line >> 80-92; >> >> >> NOTE: the running boolean is not sync'ed nor volatile yet used by >> multiple threads! >> while (running) { >> Message message = consumer.receive(1000); >> try { >> if (message != null) { >> >> listenerHandler.onMessage(message); >> } >> >> should the next test not be within the if branch above and so fix the >> shutdown warnings? When a consumer is closed it returns a null message. >> Also when a receive timeout occurs (message also null) these is no reason >> to commit. >> if (session.getTransacted()) { << >> this fails when consumer/session is closed on ActiveMQ >> session.commit(); >> } >> } catch (Throwable e) { >> LOG.log(Level.WARNING, "Exception while >> processing jms message in cxf. Rolling back", e); >> safeRollBack(session); >> } >> } >> >> [2020-01-14 11:21:19,962 WARN ] [myTaskExecutor -2] >> [PollingMessageListenerContainer$Poller:90] >> [org.apache.cxf.transport.jms.util.PollingMessageListenerContainer] >> Exception while processing jms message in cxf. Rolling back >> javax.jms.IllegalStateException: The Session is closed >> at >> org.apache.activemq.ActiveMQSession.checkClosed(ActiveMQSession.java:771) >> at >> org.apache.activemq.ActiveMQSession.getTransacted(ActiveMQSession.java:540) >> at >> org.apache.cxf.transport.jms.util.PollingMessageListenerContainer$Poller.run(PollingMessageListenerContainer.java:86) >> at >> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) >> at >> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) >> at java.lang.Thread.run(Thread.java:748) >> [2020-01-14 11:21:19,963 WARN ] [myTaskExecutor-2] >> [PollingMessageListenerContainer$Poller:111] >> [org.apache.cxf.transport.jms.util.PollingMessageListenerContainer] >> Rollback of Local transaction failed >> javax.jms.IllegalStateException: The Session is closed >> at >> org.apache.activemq.ActiveMQSession.checkClosed(ActiveMQSession.java:771) >> at >> org.apache.activemq.ActiveMQSession.getTransacted(ActiveMQSession.java:540) >> at >> org.apache.cxf.transport.jms.util.PollingMessageListenerContainer$Poller.safeRollBack(PollingMessageListenerContainer.java:107) >> at >> org.apache.cxf.transport.jms.util.PollingMessageListenerContainer$Poller.run(PollingMessageListenerContainer.java:91) >> at >> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) >> at >> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) >> at java.lang.Thread.run(Thread.java:748) >> >> >> >> De informatie in dit e-mailbericht is vertrouwelijk en uitsluitend >> bestemd voor de >> geadresseerde. Wanneer u dit bericht per abuis ontvangt, verzoeken wij u >> contact op te >> nemen met de afzender per kerende e-mail. Verder verzoeken wij u in dat >> geval dit >> e-mailbericht te vernietigen en de inhoud ervan aan niemand openbaar te >> maken. >> Wij aanvaarden geen aansprakelijkheid voor onjuiste, onvolledige dan wel >> ontijdige >> overbrenging van de inhoud van een verzonden e-mailbericht, noch voor >> daarbij >> overgebrachte virussen. >> >> APG Groep N.V. is gevestigd te Heerlen en is ingeschreven in het >> handelsregister van de Kamer van Koophandel Limburg onder nummer 14099617 >> >> >> The information contained in this e-mail is confidential and may be >> privileged. >> It may be read, copied and used only by the intended recipient. >> If you have received it in error, please contact the sender immediately >> by >> return e-mail; please delete in this case the e-mail and do not disclose >> its >> contents to any person. We don't accept liability for any errors, >> omissions, >> delays of receipt or viruses in the contents of this message which arise >> as a >> result of e-mail transmission. >> >> APG Groep N.V. is registered in the trade register of the Chamber >> of Commerce Limburg, The Netherlands, registration number: 14099617 > >
