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

Rob Davies resolved AMQ-1081.
-----------------------------

       Resolution: Fixed
    Fix Version/s: 5.0.0
         Assignee: Rob Davies

> Ack range checking, etc.
> ------------------------
>
>                 Key: AMQ-1081
>                 URL: https://issues.apache.org/activemq/browse/AMQ-1081
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.0.0
>            Reporter: [EMAIL PROTECTED]
>            Assignee: Rob Davies
>             Fix For: 5.0.0
>
>
> I'm not sure if this is serious; if not please reduce its severity.
> There seem to be some confusing things happening with acknowledgments.
> 1. PrefetchSubscription.java does a "range check" on the acknowledgement.  
> However, when the acknowledgment gets to the JDBC or Memory TOPIC store 
> (possibly other stores as well), it is assumed that all acknowledgements up 
> to the last are counted.  This seems to suggest that the "first" part of the 
> range should NOT be verified for >= (in other words, it should acknowledge 
> everything from the beginning of the dispatched LinkedList to 
> ack.getLastMessageId -- this means taking out the inAckRange variable, or 
> acting like it is always true).  I believe this may need to happen ONLY when 
> the prefetch is doing a topic (DurableTopicSubscription) , not a queue 
> (QueueSubscription), but I'm totally not sure.
> 2. When kahaadaptor.KahaTopicMessageStore is called to do an acknowledge, it 
> blindly does a removeFirst on the container, and never uses the MessageId 
> parameter to do anything.  I believe it should do a getFirst, verify that 
> that the MessageId of the ConsumerMessageRef matches the parameter, if it 
> does not match, cancel the acknowledgement (not clear how to do this because 
> the PrefetchSubscription.acknowledge has already done work).  In any event, 
> crashing the subscription might be better than risking goofing up which 
> messages have been acknowledged. (Another possibility is to walk the 
> LinkedList looking for a match, but this doesn't seem to make sense given how 
> PrefetchSubscription tracks the acknowledgments; I haven't fully thought this 
> through).
> 3. Looks like TopicSubscription.java is ignoring all of the ID info in the 
> ack parameter (this is the non-durable subscriber case).  Is this right?  
> Seems like client could just send extraneous ack messages with arbitrary IDs 
> on a non-durable subscription and goof this up.
> 4.  In either durable or non-durable case, attempt by the client to ack out 
> of sequence should error out on the client and not mess up any of the 
> subscription state.  Most worried about the case where the messageis > than 
> what has been delivered, not sure if the < case is a problem as long as it is 
> just ignored without impact (which certainly does not look like the current 
> impl in TopicSubscription.java; not sure about PrefetchSubscription.java).  
> It looks like this isn't being enforced, or did I miss something?

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