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

Reply via email to