[
https://issues.apache.org/activemq/browse/AMQ-2032?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Gary Tully closed AMQ-2032.
---------------------------
Resolution: Fixed
resolved in 725737
test case included with the commit.
> Redelivered messages to consumer skiped due to false duplicate detection on
> message rollback with Spring and cacheLevel=CACHE_NONE
> ----------------------------------------------------------------------------------------------------------------------------------
>
> Key: AMQ-2032
> URL: https://issues.apache.org/activemq/browse/AMQ-2032
> Project: ActiveMQ
> Issue Type: Bug
> Components: Broker
> Affects Versions: 5.2.0
> Environment: Spring DMLC, cacheLevel=CACHE_NONE
> Reporter: Gary Tully
> Assignee: Gary Tully
> Fix For: 5.3.0
>
>
> The failover default brokerUrl in 5.2 activates the message audit facility to
> catch possible duplicate message delivery in the event of failover. This
> mechanism can get in the way of message redelivery, particularly when
> sessions are closed and an automatic rollback kicks in.
> Original user comment:
> ----
> Redelivery of message fails after a rollback with Spring DMLC with
> cacheLevel=CACHE_NONE due to a bug in class :
> 'org.apache.activemq.ActiveMQMessageConsumer'. Redelivered messages are
> wrongly detected as duplicates. It fails to call 'rollbackDuplicates' on
> messages processed by consumer on rollback call on the consumer.
> Sequence: ( See:
> http://fisheye1.atlassian.com/browse/springframework/spring/src/org/springframework/jms/listener/AbstractPollingMessageListenerContainer.java?r=1.14
> )
> * Spring creates a transaction
> * Spring creates a JMS consumer
> * Spring give message to Application MessageListener class
> * Spring closes the consumer
> * Spring try to commit
> * Commit fails due to a RuntimeException thrown in Application
> MessageListener class
> * Spring marks the message as RollbackOnly
> * Spring rollbacks message
> When ActiveMQ closes the consumer (
> org.apache.activemq.ActiveMQMessageConsumer ), it clears 'deliveredMessages'
> list. But this list is needed in rollback method of ActiveMQMessageConsumer
> to rollback duplicates ! Then consumer cannot rollback duplicates on rollback
> if consumer is closed before rollback action. The only way I found, is to not
> clear 'deliveredMessages' list on close. It seems, there is no side effect,
> since after a call to 'close' method, the consumer is not used anymore.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.