You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Christopher L. Shannon (JIRA)" <ji...@apache.org> on 2016/07/05 20:11:10 UTC

[jira] [Resolved] (AMQ-5426) ActiveMQMessageConsumer could run into NPE due to concurrent access to internal state

     [ https://issues.apache.org/jira/browse/AMQ-5426?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Christopher L. Shannon resolved AMQ-5426.
-----------------------------------------
       Resolution: Fixed
    Fix Version/s: 5.13.4
                   5.14.0

Fix has been applied and I also included a modified version of the test case provided to try and catch any issues in the future.   I modified the test to run a bit faster (takes about 10 seconds for me now) because in my testing if it was going to fail for that run it always failed within the first few seconds.  The test case only fails for me about 1/3 of the time before the fix was applied so it isn't perfect but it's better than nothing.

> ActiveMQMessageConsumer could run into NPE due to concurrent access to internal state
> -------------------------------------------------------------------------------------
>
>                 Key: AMQ-5426
>                 URL: https://issues.apache.org/jira/browse/AMQ-5426
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: JMS client
>    Affects Versions: 5.8.0, 5.9.1, 5.10.0
>            Reporter: Michael Wong
>            Assignee: Christopher L. Shannon
>            Priority: Minor
>             Fix For: 5.14.0, 5.13.4
>
>         Attachments: AMQ5426Test.java
>
>
> ActiveMQMessageConsumer could run into NPE when the consumer is closing and a message arrived at the same time.
> Here is the stacktrace:
> java.lang.NullPointerException
> at org.apache.activemq.ActiveMQMessageConsumer.ackLater(ActiveMQMessageConsumer.java:979)
> at org.apache.activemq.ActiveMQMessageConsumer.afterMessageIsConsumed(ActiveMQMessageConsumer.java:929)
> at org.apache.activemq.ActiveMQMessageConsumer.dispatch(ActiveMQMessageConsumer.java:1323)
> at org.apache.activemq.ActiveMQSessionExecutor.dispatch(ActiveMQSessionExecutor.java:131)
> at org.apache.activemq.ActiveMQSessionExecutor.iterate(ActiveMQSessionExecutor.java:202)
> at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:129)
> at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:47)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> at java.lang.Thread.run(Thread.java:745)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)