[ 
https://issues.apache.org/jira/browse/PROTON-484?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13867634#comment-13867634
 ] 

Andreas Mueller commented on PROTON-484:
----------------------------------------

This is what you send when attaching a receiver (no default outcome set in the 
source):

[Attach name=receiver-xxx, handle=0, role=TRUE, sndSettleMode=2, 
rcvSettleMode=0, source=[Source address=testqueue, durable=0, 
expiryPolicy=session-end, timeout=0, dynamic=FALSE], target=[Target 
address=testqueue, durable=0, expiryPolicy=session-end, timeout=0, 
dynamic=FALSE], incompleteUnsettled=FALSE, initialDeliveryCount=0]

This is what SwiftMQ sends you back (announcing "released" as default outcome 
for the source):

[Attach name=receiver-xxx, handle=0, role=FALSE, sndSettleMode=2, 
rcvSettleMode=0, source=[Source address=testqueue, durable=1, 
expiryPolicy=link-detach, timeout=0, dynamic=FALSE, defaultOutcome=[Released ], 
outcomes=[amqp:accepted:list, amqp:rejected:list, amqp:released:list, 
amqp:modified:list]], target=[Target address=testqueue, durable=0, 
expiryPolicy=session-end, timeout=0, dynamic=FALSE], incompleteUnsettled=FALSE, 
initialDeliveryCount=0]

According to your interpretation of the spec, "released" will be applied if you 
send a dispo frame without an outcome. This is what SwiftMQ does and this 
caused a continuous redelivery of the very same message.

Keep in mind that the default outcome will be applied to all unsettled 
transfers in case the connection drops. If you would set it to "accepted" this 
may cause message losts.  That's why SwiftMQ's default outcome is always 
"released" to cause rollback and redelivery. So the correct way for me seems to 
be to include the delivery state in the dispo frame.

I would apply a workaround too but can't just set "accepted" if the delivery 
state is missed in the dispo frame. I have to use the default outcome.

> Disposition Frane: Missing DeliveryState, no default outcome
> ------------------------------------------------------------
>
>                 Key: PROTON-484
>                 URL: https://issues.apache.org/jira/browse/PROTON-484
>             Project: Qpid Proton
>          Issue Type: Bug
>          Components: proton-c
>    Affects Versions: 0.5
>            Reporter: Andreas Mueller
>
> If a message is delivered from a broker to Proton-C by a transfer frame with 
> settled=false, Proton sends a disposition frame with settled=true but without 
> a delivery state. A delivery state is required because a message can be e.g. 
> accepted or rejected through a disposition frame. 



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to