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

Christopher L. Shannon resolved AMQ-7129.
-----------------------------------------
    Resolution: Fixed

> Durable subscription messages can be orphaned when using individual ack mode 
> with KahaDB
> ----------------------------------------------------------------------------------------
>
>                 Key: AMQ-7129
>                 URL: https://issues.apache.org/jira/browse/AMQ-7129
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: KahaDB
>    Affects Versions: 5.15.8
>            Reporter: Christopher L. Shannon
>            Assignee: Christopher L. Shannon
>            Priority: Major
>             Fix For: 5.16.0, 5.15.9
>
>
> While not a common use case it is possible for a client to use individual 
> acknowledge mode on a durable subscription.  This allows the following 
> scenario:
>  # durable subscription is created on a topic
>  # 10 messages are published to the topic
>  # durable subscription consumes the messages but only acks the 5th message
>  # Broker is restarted
> What should happen is there should be 9 messages left that are recovered when 
> the subscription comes back online.  What actually happens though is that 
> messages 1-4 are stuck forever because the KahaDB index will not load them on 
> activation. The problem is that the lackAck value that is stored in the index 
> is for message 5 so it starts on message 5 for recovery and ignores messages 
> 1-4 even though those values are still tracked as part of the ackPositions 
> sequence set.
> The solution is that when the subscription is loaded to check if there are 
> any ackPositions for that subscription that are earlier than the lastAck 
> value and if they are we need to reset the cursor to the first ackPosition. 
> Then we need to verify on recovery that any message iterated over actually 
> exists as part of the sequence set so we don't load duplicates (this scenario 
> happens if multiple subscriptions exist on the topic)



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to