[
https://issues.apache.org/jira/browse/AMQ-4413?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jaewoong Choi updated AMQ-4413:
-------------------------------
Description:
Persistent message is lost intermittently when JMS durable topic subscriber
reconnects to the broker service. From the log observation, it seems that the
internal states of the store cursor (i.e. AbstractStoreCursor) is not well
guarded by race condition between message sending/directly-dispatching-pending
thread (from publisher) and subscription deactivating thread (from subscriber's
closing), especially when subscriber's closing
(javax.jms.MessageConsumer#close) and message publishing happen simultaneously.
Observations and the test scenario are described at below in detail:
http://activemq.2283324.n4.nabble.com/persistent-message-missing-to-a-durable-subscriber-when-it-reconnects-restarts-td4665130.html
Attached please find Test.java that I used to verify this issue. I found the
issue initially with activemq-core-5.7.0.jar then confirmed that it's
reproducible with other upper versions (i.e. apache-activemq-5.8-SNAPSHOT,
apache-activemq-5.9-SNAPSHOT).
This "message loss" issue is pretty critical as it can happen whenever durable
subscriber reconnects either purposely or unexpectedly, and it's violating the
one of primitive features that messaging platform guarantees when it happens,
whereas it's so easy to reproduce the trouble.
was:
Persistent message is lost intermittently when JMS durable topic subscriber
reconnects to the broker service. From the log observation, it seems that the
internal states of the store cursor (i.e. AbstractStoreCursor) is not well
guarded by race condition between message sending/directly-dispatching-pending
thread (from publisher) and subscription deactivating thread (from subscriber's
closing), especially when subscriber's closing
(javax.jms.MessageConsumer#close) and message publishing happen simultaneously.
Observations and the test scenario are described at below in detail:
http://activemq.2283324.n4.nabble.com/persistent-message-missing-to-a-durable-subscriber-when-it-reconnects-restarts-td4665130.html
I have a simple Test.java file that I used to verify this issue (I'll attach
this file). I encountered this problem initially with activemq-core-5.7.0.jar
then confirmed that it's reproducible with other upper versions (i.e.
apache-activemq-5.8-SNAPSHOT, apache-activemq-5.9-SNAPSHOT).
This "message loss" issue is pretty critical as it can happen whenever durable
subscriber reconnects either purposely or unexpectedly, and it's violating the
one of primitive features that messaging platform guarantees when it happens,
whereas it's so easy to reproduce the trouble.
> Persistent message loss when JMS durable subscriber reconnects regardless of
> message store impl.
> ------------------------------------------------------------------------------------------------
>
> Key: AMQ-4413
> URL: https://issues.apache.org/jira/browse/AMQ-4413
> Project: ActiveMQ
> Issue Type: Bug
> Components: Broker, JMS client, Message Store
> Affects Versions: 5.7.0, 5.8.0
> Reporter: Jaewoong Choi
> Priority: Critical
> Attachments: Test.java
>
>
> Persistent message is lost intermittently when JMS durable topic subscriber
> reconnects to the broker service. From the log observation, it seems that
> the internal states of the store cursor (i.e. AbstractStoreCursor) is not
> well guarded by race condition between message
> sending/directly-dispatching-pending thread (from publisher) and subscription
> deactivating thread (from subscriber's closing), especially when subscriber's
> closing (javax.jms.MessageConsumer#close) and message publishing happen
> simultaneously.
> Observations and the test scenario are described at below in detail:
> http://activemq.2283324.n4.nabble.com/persistent-message-missing-to-a-durable-subscriber-when-it-reconnects-restarts-td4665130.html
> Attached please find Test.java that I used to verify this issue. I found the
> issue initially with activemq-core-5.7.0.jar then confirmed that it's
> reproducible with other upper versions (i.e. apache-activemq-5.8-SNAPSHOT,
> apache-activemq-5.9-SNAPSHOT).
> This "message loss" issue is pretty critical as it can happen whenever
> durable subscriber reconnects either purposely or unexpectedly, and it's
> violating the one of primitive features that messaging platform guarantees
> when it happens, whereas it's so easy to reproduce the trouble.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira