You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Robbie Gemmell (JIRA)" <ji...@apache.org> on 2014/09/30 15:41:33 UTC

[jira] [Created] (AMQ-5374) AMQP delivery-count header set to the wrong value following a rollback

Robbie Gemmell created AMQ-5374:
-----------------------------------

             Summary: AMQP delivery-count header set to the wrong value following a rollback
                 Key: AMQ-5374
                 URL: https://issues.apache.org/jira/browse/AMQ-5374
             Project: ActiveMQ
          Issue Type: Bug
          Components: AMQP
            Reporter: Robbie Gemmell
             Fix For: 5.11.0


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.

{noformat}
<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>
{noformat}

{noformat}
<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>
{noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)