qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Martin Ritchie (JIRA)" <qpid-...@incubator.apache.org>
Subject [jira] Updated: (QPID-1186) [Client Race Condition] After Failover client can ack last message from previous session.
Date Mon, 04 Aug 2008 13:12:44 GMT

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

Martin Ritchie updated QPID-1186:

    Priority: Blocker  (was: Major)

> [Client Race Condition] After Failover client can ack last message from previous session.
> -----------------------------------------------------------------------------------------
>                 Key: QPID-1186
>                 URL: https://issues.apache.org/jira/browse/QPID-1186
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Client
>    Affects Versions: M2.1
>            Reporter: Martin Ritchie
>            Assignee: Martin Ritchie
>            Priority: Blocker
>             Fix For: M3
>         Attachments: TEST-org.apache.qpid.test.client.failover.FailoverTest.txt
> Summary:
> There is no locking controlling the interaction of the Dispatcher and Failover threads.
> If the Dispatcher thread is mid processing of a message and Failover occurs successfully
the message will continue to be delivered to the consumer. 
> If that consumer session requires acknowledgement then the message will be acked when
received, even though the message is now no longer valid in this new session.
> Steps to Reproduce:
> This is difficult to reproduce as it is a race condition.  Adding a sleep in to the BasicMessageConsumer
(L:669) notifyMessage(UnprocessedMessage) should do the trick in the (org.apache.qpid.test.client.failover)
> Proposed Changes:
> When failover occurs then the dispatcher needs to be stopped so that any message currently
being processed is halted. 
> - It should not continue to deliver the message if failover starts as delivery to a message
listener will not be able to ack the message, and the message will be redelivered, unless
the session is NO_ACK.
> When failover completes and clears the Consumer's state then we can be sure that the
Dispatcher was not mid delivery with a message from a previous session.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message