You are viewing a plain text version of this content. The canonical link for it is here.
Posted to proton@qpid.apache.org by "Alan Conway (JIRA)" <ji...@apache.org> on 2015/11/26 17:35:11 UTC
[jira] [Updated] (PROTON-1067) python messenger: cannot acknowledge
messages, messenger forces auto-ack or pre-settled.
[ https://issues.apache.org/jira/browse/PROTON-1067?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Alan Conway updated PROTON-1067:
--------------------------------
Attachment: recv.py
Attached reporducer. Run with PN_TRACE_FRM=1 against a broker that respects the client's setting for snd-settle-mode e.g. qpidd C++ broker or the proton example go broker:
{code}
> cd ~/proton/examples/go/electron/ && go run broker.go -debug&
> go run send.go /test
> PN_TRACE_FRM=1 python /tmp/recv.py
{code}
You can see that the receiver requests snd-settle-mode=1 (pre-settled)
Note that the example python broker hides the problem by ignoring the clients requested snd-settle-mode, forcing it to 2 (mixed) and sending unsettled messages.
> python messenger: cannot acknowledge messages, messenger forces auto-ack or pre-settled.
> ----------------------------------------------------------------------------------------
>
> Key: PROTON-1067
> URL: https://issues.apache.org/jira/browse/PROTON-1067
> Project: Qpid Proton
> Issue Type: Bug
> Components: python-binding
> Affects Versions: 0.11
> Reporter: Alan Conway
> Attachments: recv.py
>
>
> In order to manually acknowledge received messages messenger requires you to:
> 1. set "incoming_window" > 0, otherwise messenger auto-settles all messages.
> 2. set "snd_settled_mode" to SND_UNSETTLED so that the remote end does not pre-settle messages.
> However the python binding (and I think all the bindings) for messenger do not allow you to call pn_messenger_set_snd_settled_mode, which defaults to SND_SETTLED. Thus it is impossible to manually accept messages because either (with incoming_window==0) messenger auto-settles them or (with incoming_window > 0) messenger's subscribe requests SND_SETTLED on the incoming link so the other end sends pre-settled messages.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)