Description
The delivery-count field in the AMQP 1.0 message header tracks prior unsuccessful delivery attempts and so should go 0,1,2. In testing against the 5.11-SNAPSHOT I see the value going from 0 (unset, default) initially, to 2, then 3, etc, following repeated rollbacks. I have tracked this to a defect in the proton-jms contrib artifact and corrected it via PROTON-704, for inclusion in Proton 0.8.
The issue can be seen in the below snippets of protocol trace (at the lines marked <<<<<). When the message is first transfered to the client, the delivery count field is null / not set, giving the default value of 0. Later when the message is sent again after a rollback, the delivery-count header has incremented to 2 rather than 1.
<TCP time="15:22:55.967963" seqno="1705009155" size="186"> <source host="127.0.0.1" port="37703"/> <target host="127.0.0.1" port="39557"/> <frame size="186" doff="2" chan="1"> <small-descriptor code="0x0:0x14"/> # transfer <list8 size="8" count="4"> # transfer <small-uint> 1 </small-uint> # handle <uint0/> # delivery-id <bin8 size="1"> # delivery-tag "0" </bin8> <uint0/> # message-format # <null/> settled # <null/> more [false] # <null/> rcv-settle-mode # <null/> state # <null/> resume [false] # <null/> aborted [false] # <null/> batchable [false] </list8> <small-descriptor code="0x0:0x70"/> # header <list8 size="4" count="2"> # header <true/> # durable <ubyte> 4 </ubyte> # priority # <null/> ttl # <null/> first-acquirer # <null/> delivery-count <<<<< </list8> <small-descriptor code="0x0:0x72"/> # message-annotations <map8 size="23" count="2"> # message-annotations <sym8 size="13"> "x-opt-to-type" </sym8> <str8-utf8 size="5"> "queue" </str8-utf8> </map8> <small-descriptor code="0x0:0x73"/> # properties <list8 size="104" count="10"> # properties <str8-utf8 size="54"> # message-id "ID:localhost.localdo" "main-56080-141200416" "5134-2:1:2:1:1" </str8-utf8> <null/> # user-id <str8-utf8 size="29"> # to "queue://testJMSXDeli" "veryCount" </str8-utf8> <null/> # subject <null/> # reply-to <null/> # correlation-id <null/> # content-type <null/> # content-encoding <null/> # absolute-expiry-time <time t="1412004165442"/>#2014/9/29 15:22:45.442 # creation-time # <null/> group-id # <null/> group-sequence # <null/> reply-to-group-id </list8> <small-descriptor code="0x0:0x77"/> # amqp-value <str8-utf8 size="14"> # amqp-value "TextMessage: 0" </str8-utf8> </frame> </TCP>
<TCP time="15:22:56.033807" seqno="1705009397" size="215"> <source host="127.0.0.1" port="37703"/> <target host="127.0.0.1" port="39557"/> <frame size="24" doff="2" chan="1"> <small-descriptor code="0x0:0x15"/> # disposition <list8 size="11" count="5"> # disposition <true/> # role <small-uint> 1 </small-uint> # first <small-uint> 1 </small-uint> # last <true/> # settled <small-descriptor code="0x0:0x24"/> # state <list0/> # accepted # <null/> batchable [false] </list8> </frame> <frame size="191" doff="2" chan="1"> <small-descriptor code="0x0:0x14"/> # transfer <list8 size="9" count="4"> # transfer <small-uint> 1 </small-uint> # handle <small-uint> 1 </small-uint> # delivery-id <bin8 size="1"> # delivery-tag "1" </bin8> <uint0/> # message-format # <null/> settled # <null/> more [false] # <null/> rcv-settle-mode # <null/> state # <null/> resume [false] # <null/> aborted [false] # <null/> batchable [false] </list8> <small-descriptor code="0x0:0x70"/> # header <list8 size="8" count="5"> # header <true/> # durable <ubyte> 4 </ubyte> # priority <null/> # ttl <null/> # first-acquirer <small-uint> 2 </small-uint> # delivery-count <<<<< </list8> <small-descriptor code="0x0:0x72"/> # message-annotations <map8 size="23" count="2"> # message-annotations <sym8 size="13"> "x-opt-to-type" </sym8> <str8-utf8 size="5"> "queue" </str8-utf8> </map8> <small-descriptor code="0x0:0x73"/> # properties <list8 size="104" count="10"> # properties <str8-utf8 size="54"> # message-id "ID:localhost.localdo" "main-56080-141200416" "5134-2:1:2:1:1" </str8-utf8> <null/> # user-id <str8-utf8 size="29"> # to "queue://testJMSXDeli" "veryCount" </str8-utf8> <null/> # subject <null/> # reply-to <null/> # correlation-id <null/> # content-type <null/> # content-encoding <null/> # absolute-expiry-time <time t="1412004165442"/>#2014/9/29 15:22:45.442 # creation-time # <null/> group-id # <null/> group-sequence # <null/> reply-to-group-id </list8> <small-descriptor code="0x0:0x77"/> # amqp-value <str8-utf8 size="14"> # amqp-value "TextMessage: 0" </str8-utf8> </frame> </TCP>
Attachments
Issue Links
- relates to
-
AMQ-5346 Update Proton to version 0.8
- Resolved