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
>
>

Reply via email to