On 12/01/2014 05:41 PM, [email protected] wrote:
Author: aconway
Date: Mon Dec  1 17:41:09 2014
New Revision: 1642720

URL: http://svn.apache.org/r1642720
Log:
QPID-6252: AMQP 1.0 browsing client generates large number of errors on broker.

The problem was that messages for browsing receivers were being recorded on the
client SessionContext unacked list. This is incorrect since you don't ack
browsed messages.  They remained on the list after the browsing receiver was
closed, and every subsequent call to acknowledge() on the client would attempt
to ack these messages for a no-longer-existing link. Fix is to not record
browsed messages.

I don't think this is right.

From the client's perspective, it should still be able to accept and settle deliveries, regardless of whether the broker will dequeue in response.

From the protocol perspective, deliveries must always get settled. Otherwise they need to be tracked (whether within proton or on the sending peer).

As regards the original error, the spec says:

    The disposition performative MAY refer to deliveries on
    links that are no longer attached. As long as the links
    have not been closed or detached with an error then the
    deliveries are still “live” and the updated state MUST
    be applied.

It doesn't explicitly say what should happen if the link has been closed (not just detached), so its probably best to just ignore it on the broker (change the log level from error to info perhaps).

The client should probably also settle all existing deliveries received on a link before closing it.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to