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

Reply via email to