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)