You are viewing a plain text version of this content. The canonical link for it is here.
Posted to proton@qpid.apache.org by James Birdsall <jb...@microsoft.com> on 2014/11/21 02:31:14 UTC

Change in Proton-C receive behavior with 0.8

In previous versions of Proton-C, if the incoming window size was set when a receive link was established, the send settle mode was 0 (UNSETTLED) and the receive settle mode was 1 (RCV_SECOND). This gives the receiver at-least-once assurance, which is what our (Azure ServiceBus) customers overwhelmingly want, so our advice and samples emphasized that it was vital to set the incoming window size.

With version 0.8, under the same conditions, the send settle mode is 1 (SETTLED) and the receive settle mode is 0 (RCV_FIRST) - the complete opposite behavior from before. This scares me because if you just naively drop 0.8 into your existing application, it builds and appears to work fine. There is no visible indication that you've just lost your reliability assurance, and I don't see anything about it in the release notes, either. I only stumbled across this because I was looking at the Proton traces for unrelated reasons.

Obviously this situation can be changed with suitable use of the new pn_messenger_set_{snd,rcv}_settle_mode APIs, and we will be updating our samples and advice with that info. But will a customer who is just moving from one version of Proton to another consult that advice? Especially when it appears to just work.

--James