Uploaded image for project: 'Qpid'
  1. Qpid
  2. QPID-8058

[Broker-J][AMQP 1.0] Broker does not respond to drain request from consumer of management temporary destination

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • qpid-java-broker-7.0.0
    • qpid-java-broker-7.0.1
    • Broker-J
    • None

    Description

      Test AmqpManagementTest.testCreateQueueOnBrokerManagement failed with the following error:

      org.apache.qpid.jms.JmsOperationTimedOutException: Remote did not respond to a drain request in time
      

      As per exception message, the client sent the Flow with drain=true but Broker did not reply on it

      2017-12-05 18:20:13,950          DEBUG [IO-/127.0.0.1:48726] o.a.q.s.p.frame RECV[/127.0.0.1:48726|1] : Flow{nextIncomingId=0,incomingWindow=2047,nextOutgoingId=2,outgoingWindow=2147483647,handle=0,deliveryCount=0,linkCredit=1000,drain=true}
      

      See the test log attached.

      Broker-J does not respond on flow performative with drain flag coming from consumers of temporary destinations created on management nodes ($management).

      Test attached receiver link for temporary destination created on management mode:

      2017-12-05 18:20:11,760          DEBUG [IO-/127.0.0.1:48726] o.a.q.s.p.frame RECV[/127.0.0.1:48726|1] : Attach{name=qpid-jms:receiver:ID:0ea0fec9-455c-47db-b15e-4fd09c0c48d6:1:1:1:TempQueuecdf2fb78-beda-4456-9e2c-dd2dd4d9a53e,handle=0,role=receiver,sndSettleMode=unsettled,rcvSettleMode=first,source=Source{address=TempQueuecdf2fb78-beda-4456-9e2c-dd2dd4d9a53e,durable=none,expiryPolicy=link-detach,timeout=0,dynamic=false,defaultOutcome=Modified{deliveryFailed=true},outcomes=[amqp:accepted:list, amqp:rejected:list, amqp:released:list, amqp:modified:list],capabilities=[temporary-queue]},target=Target{}}
      2017-12-05 18:20:11,763          DEBUG [IO-/127.0.0.1:48726] o.a.q.s.p.frame SEND[/127.0.0.1:48726|1] : Attach{name=qpid-jms:receiver:ID:0ea0fec9-455c-47db-b15e-4fd09c0c48d6:1:1:1:TempQueuecdf2fb78-beda-4456-9e2c-dd2dd4d9a53e,handle=0,role=sender,sndSettleMode=unsettled,rcvSettleMode=first,source=Source{address=TempQueuecdf2fb78-beda-4456-9e2c-dd2dd4d9a53e,durable=none,expiryPolicy=link-detach,dynamic=false,defaultOutcome=Modified{deliveryFailed=true},outcomes=[amqp:accepted:list, amqp:released:list, amqp:rejected:list],capabilities=[]},target=Target{},unsettled={},initialDeliveryCount=0,offeredCapabilities=[SHARED-SUBS],properties={}}
      

      Granted credit

      2017-12-05 18:20:11,765          DEBUG [IO-/127.0.0.1:48726] o.a.q.s.p.frame RECV[/127.0.0.1:48726|1] : Flow{nextIncomingId=0,incomingWindow=2047,nextOutgoingId=1,outgoingWindow=2147483647,handle=0,deliveryCount=0,linkCredit=1000}
      

      Broker sent Transfer

      2017-12-05 18:20:13,949          DEBUG [IO-/127.0.0.1:48726] o.a.q.s.p.frame SEND[/127.0.0.1:48726|1] : Transfer{handle=0,deliveryId=0,deliveryTag=\x00\x00\x00\x00\x00\x00\x00\x00,messageFormat=0}
      

      and immediately after transfer received Flow with drain=true

      2017-12-05 18:20:13,950          DEBUG [IO-/127.0.0.1:48726] o.a.q.s.p.frame RECV[/127.0.0.1:48726|1] : Flow{nextIncomingId=0,incomingWindow=2047,nextOutgoingId=2,outgoingWindow=2147483647,handle=0,deliveryCount=0,linkCredit=1000,drain=true}
      

      There was no message left on message source but broker did not send flow back.

      The existing implementation of ManagementNode#pullMessage does not notify its ConsumerTarget when there is no messages left to send.

      Only users of AMQP management are affected by the bug.

      Attachments

        Activity

          People

            kwall Keith Wall
            orudyy Alex Rudyy
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: