[
https://issues.apache.org/jira/browse/PROTON-2186?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17079448#comment-17079448
]
Jiri Daněk commented on PROTON-2186:
------------------------------------
[~fgiorget] I think that proton behaves correctly. Dispatch sends disposition
performatives and proton is informing you of those in the on_released callback.
If anything, I would probably wonder why is dispatch sending multiple
dispositions about the same message.
Maybe you are here supposed to ignore all dispositions that don't have
{{settled=true}}. The peer is free to change its mind about the disposition,
until it sets one final settled=true disposition. That is my understanding of
http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-transport-v1.0-os.html#type-transfer
{quote}
settled
optional boolean
If not set on the first (or only) transfer for a (multi-transfer) delivery,
then the settled flag MUST be interpreted as being false. For subsequent
transfers in a multi-transfer delivery if the settled flag is left unset then
it MUST be interpreted as true if and only if the value of the settled flag on
any of the preceding transfers was true; if no preceding transfer was sent with
settled being true then the value when unset MUST be taken as false.
If the negotiated value for snd-settle-mode at attachment is {{settled}}, then
this field MUST be true on at least one transfer frame for a delivery (i.e.,
the delivery MUST be settled at the sender at the point the delivery has been
completely transferred).
If the negotiated value for snd-settle-mode at attachment is {{unsettled}},
then this field MUST be false (or unset) on every transfer frame for a delivery
(unless the delivery is aborted).
{quote}
> On released callback invoked twice for same delivery tag
> --------------------------------------------------------
>
> Key: PROTON-2186
> URL: https://issues.apache.org/jira/browse/PROTON-2186
> Project: Qpid Proton
> Issue Type: Bug
> Components: python-binding
> Reporter: Fernando Giorgetti
> Priority: Major
>
> In a python client application, that is connected to a dispatch router, I
> have observed that the on_released callback was invoked twice for the same
> delivery tag.
> Here are the disposition frames I was able to capture for the respective
> delivery:
> {noformat}
> [0x562a0083ed80]:0 <- @disposition(21) [role=true, first=981,
> state=@released(38) []]
> [0x562a0083ed80]:0 <- @disposition(21) [role=true, first=981, last=982,
> settled=true, state=@released(38) []]{noformat}
> The delivery tag 981 came first without the settlement and next with the
> settled as true. And the on_released was called twice for the 981 delivery
> tag.
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]