Uploaded image for project: 'AMQ Broker'
  1. AMQ Broker
  2. ENTMQBR-2201

Repeated sending, receiving and disconnecting will freeze .NET Client

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Major
    • AMQ 7.3.0.GA
    • None
    • None
    • None
    • +
    • Verified in a release
    • Hide
      • Increase <journal-buffer-size> of broker.xml.
        <journal-buffer-size>10M</journal-buffer-size>
        
      Show
      Increase <journal-buffer-size> of broker.xml. <journal-buffer-size>10M</journal-buffer-size>
    • Hide
      1. Add `testqueue` definition on AMQ Broker[2]
      2. Execute .NET Client program[3]
      3. => .NET Client is freeze when receiving the third message[4]
      4. => AMQ Broker output WARN log[1]

      [2] `testqueue` definition

            <addresses>
               <address name="testqueue">
                  <anycast>
                     <queue name="testqueue" />
                  </anycast>
               </address>
      ...
      

      [3] .NET Client program
      Attached source code: Program.cs

      [4] .NET Client will be freeze when receiving the third message
      Attached file: client_output.txt

      Show
      Add `testqueue` definition on AMQ Broker [2] Execute .NET Client program [3] => .NET Client is freeze when receiving the third message [4] => AMQ Broker output WARN log [1] [2] `testqueue` definition <addresses> <address name= "testqueue" > <anycast> <queue name= "testqueue" /> </anycast> </address> ... [3] .NET Client program Attached source code: Program.cs [4] .NET Client will be freeze when receiving the third message Attached file: client_output.txt

    Description

      • Repeated sending, receiving and disconnecting will freeze .NET Client and WARN logs[1] are outputted on AMQ Broker.
      • The problem occurs only when Large Message is used and connections are repeatedly disconnected.
      • It is reproduced only in .NET, and the problem does not reproduce with Java AMQP client.

      [1] WARN log

      2018-12-14 08:29:41,975 WARN  [org.apache.activemq.artemis.core.server] AMQ222151: removing consumer which did not handle a message, consumer=ServerConsumerImpl [id=0, filter=null, binding=LocalQueueBinding [address=testqueue, queue=QueueImpl[name=testqueue, postOffice=PostOfficeImpl [server=ActiveMQServerImpl::serverUUID=fddfab6c-fdb2-11e8-a664-0242ac150002], temp=false]@51cb0be7, filter=null, name=testqueue, clusterName=testqueuefddfab6c-fdb2-11e8-a664-0242ac150002]], message=Reference[14765]:NON-RELIABLE:LargeServerMessage[messageID=14765,durable=false,userID=null,priority=4, timestamp=0,expiration=0, durable=false, address=testqueue, properties=TypedProperties[_AMQ_LARGE_SIZE=2000005]]@348753850: java.lang.IllegalStateException: Can't deliver message java.lang.IllegalStateException: send not allowed after the sender is closed.
              at org.apache.activemq.artemis.protocol.amqp.broker.AMQPSessionCallback.sendMessage(AMQPSessionCallback.java:652) [artemis-amqp-protocol-2.6.1.amq-720004-redhat-1.jar:]
              at org.apache.activemq.artemis.core.server.impl.ServerConsumerImpl.deliverStandardMessage(ServerConsumerImpl.java:1106) [artemis-server-2.6.1.amq-720004-redhat-1.jar:2.6.1.amq-720004-redhat-1]
              at org.apache.activemq.artemis.core.server.impl.ServerConsumerImpl.proceedDeliver(ServerConsumerImpl.java:464) [artemis-server-2.6.1.amq-720004-redhat-1.jar:2.6.1.amq-720004-redhat-1]
              at org.apache.activemq.artemis.core.server.impl.QueueImpl.proceedDeliver(QueueImpl.java:2938) [artemis-server-2.6.1.amq-720004-redhat-1.jar:2.6.1.amq-720004-redhat-1]
              at org.apache.activemq.artemis.core.server.impl.QueueImpl.deliver(QueueImpl.java:2406) [artemis-server-2.6.1.amq-720004-redhat-1.jar:2.6.1.amq-720004-redhat-1]
              at org.apache.activemq.artemis.core.server.impl.QueueImpl.access$2000(QueueImpl.java:107) [artemis-server-2.6.1.amq-720004-redhat-1.jar:2.6.1.amq-720004-redhat-1]
              at org.apache.activemq.artemis.core.server.impl.QueueImpl$DeliverRunner.run(QueueImpl.java:3211) [artemis-server-2.6.1.amq-720004-redhat-1.jar:2.6.1.amq-720004-redhat-1]
              at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42) [artemis-commons-2.6.1.amq-720004-redhat-1.jar:2.6.1.amq-720004-redhat-1]
              at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31) [artemis-commons-2.6.1.amq-720004-redhat-1.jar:2.6.1.amq-720004-redhat-1]
              at org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:66) [artemis-commons-2.6.1.amq-720004-redhat-1.jar:2.6.1.amq-720004-redhat-1]
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [rt.jar:1.8.0_171]
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [rt.jar:1.8.0_171]
              at org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118) [artemis-commons-2.6.1.amq-720004-redhat-1.jar:2.6.1.amq-720004-redhat-1]
      Caused by: java.lang.IllegalStateException: send not allowed after the sender is closed.
              at org.apache.qpid.proton.engine.impl.SenderImpl.send(SenderImpl.java:67) [proton-j-0.27.1.redhat-1.jar:]
              at org.apache.activemq.artemis.protocol.amqp.proton.ProtonServerSenderContext.deliverMessage(ProtonServerSenderContext.java:717) [artemis-amqp-protocol-2.6.1.amq-720004-redhat-1.jar:]
              at org.apache.activemq.artemis.protocol.amqp.broker.AMQPSessionCallback.sendMessage(AMQPSessionCallback.java:643) [artemis-amqp-protocol-2.6.1.amq-720004-redhat-1.jar:]
              ... 12 more
      
      2018-12-14 08:29:42,014 WARN  [org.apache.activemq.artemis.core.server] AMQ222151: removing consumer which did not handle a message, consumer=ServerConsumerImpl [id=0, filter=null, binding=LocalQueueBinding [address=testqueue, queue=QueueImpl[name=testqueue, postOffice=PostOfficeImpl [server=ActiveMQServerImpl::serverUUID=fddfab6c-fdb2-11e8-a664-0242ac150002], temp=false]@51cb0be7, filter=null, name=testqueue, clusterName=testqueuefddfab6c-fdb2-11e8-a664-0242ac150002]], message=Reference[14765]:NON-RELIABLE:LargeServerMessage[messageID=14765,durable=false,userID=null,priority=4, timestamp=0,expiration=0, durable=false, address=testqueue, properties=TypedProperties[_AMQ_LARGE_SIZE=2000005]]@348753850: java.lang.IllegalStateException: Can't deliver message java.lang.IndexOutOfBoundsException: readerIndex(0) + length(1) exceeds writerIndex(0): UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeHeapByteBuf(ridx: 0, widx: 0, cap: 2000005)
              at org.apache.activemq.artemis.protocol.amqp.broker.AMQPSessionCallback.sendMessage(AMQPSessionCallback.java:652) [artemis-amqp-protocol-2.6.1.amq-720004-redhat-1.jar:]
              at org.apache.activemq.artemis.core.server.impl.ServerConsumerImpl.deliverStandardMessage(ServerConsumerImpl.java:1106) [artemis-server-2.6.1.amq-720004-redhat-1.jar:2.6.1.amq-720004-redhat-1]
              at org.apache.activemq.artemis.core.server.impl.ServerConsumerImpl.proceedDeliver(ServerConsumerImpl.java:464) [artemis-server-2.6.1.amq-720004-redhat-1.jar:2.6.1.amq-720004-redhat-1]
              at org.apache.activemq.artemis.core.server.impl.QueueImpl.proceedDeliver(QueueImpl.java:2938) [artemis-server-2.6.1.amq-720004-redhat-1.jar:2.6.1.amq-720004-redhat-1]
              at org.apache.activemq.artemis.core.server.impl.QueueImpl.deliver(QueueImpl.java:2406) [artemis-server-2.6.1.amq-720004-redhat-1.jar:2.6.1.amq-720004-redhat-1]
              at org.apache.activemq.artemis.core.server.impl.QueueImpl.access$2000(QueueImpl.java:107) [artemis-server-2.6.1.amq-720004-redhat-1.jar:2.6.1.amq-720004-redhat-1]
              at org.apache.activemq.artemis.core.server.impl.QueueImpl$DeliverRunner.run(QueueImpl.java:3211) [artemis-server-2.6.1.amq-720004-redhat-1.jar:2.6.1.amq-720004-redhat-1]
              at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42) [artemis-commons-2.6.1.amq-720004-redhat-1.jar:2.6.1.amq-720004-redhat-1]
              at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31) [artemis-commons-2.6.1.amq-720004-redhat-1.jar:2.6.1.amq-720004-redhat-1]
              at org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:66) [artemis-commons-2.6.1.amq-720004-redhat-1.jar:2.6.1.amq-720004-redhat-1]
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [rt.jar:1.8.0_171]
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [rt.jar:1.8.0_171]
              at org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118) [artemis-commons-2.6.1.amq-720004-redhat-1.jar:2.6.1.amq-720004-redhat-1]
      Caused by: java.lang.IndexOutOfBoundsException: readerIndex(0) + length(1) exceeds writerIndex(0): UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeHeapByteBuf(ridx: 0, widx: 0, cap: 2000005)
              at io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1403) [netty-all-4.1.19.Final-redhat-1.jar:4.1.19.Final-redhat-1]
              at io.netty.buffer.AbstractByteBuf.readByte(AbstractByteBuf.java:707) [netty-all-4.1.19.Final-redhat-1.jar:4.1.19.Final-redhat-1]
              at io.netty.buffer.WrappedByteBuf.readByte(WrappedByteBuf.java:521) [netty-all-4.1.19.Final-redhat-1.jar:4.1.19.Final-redhat-1]
              at org.apache.activemq.artemis.api.core.SimpleString.readNullableSimpleString(SimpleString.java:154) [artemis-commons-2.6.1.amq-720004-redhat-1.jar:2.6.1.amq-720004-redhat-1]
              at org.apache.activemq.artemis.core.buffers.impl.ChannelBufferWrapper.readNullableSimpleString(ChannelBufferWrapper.java:69) [artemis-commons-2.6.1.amq-720004-redhat-1.jar:2.6.1.amq-720004-redhat-1]
              at org.apache.activemq.artemis.reader.TextMessageUtil.readBodyText(TextMessageUtil.java:37) [artemis-core-client-2.6.1.amq-720004-redhat-1.jar:2.6.1.amq-720004-redhat-1]
              at org.apache.activemq.artemis.protocol.amqp.converter.jms.ServerJMSTextMessage.decode(ServerJMSTextMessage.java:94) [artemis-amqp-protocol-2.6.1.amq-720004-redhat-1.jar:]
              at org.apache.activemq.artemis.protocol.amqp.converter.CoreAmqpConverter.fromCore(CoreAmqpConverter.java:116) [artemis-amqp-protocol-2.6.1.amq-720004-redhat-1.jar:]
              at org.apache.activemq.artemis.protocol.amqp.converter.CoreAmqpConverter.checkAMQP(CoreAmqpConverter.java:106) [artemis-amqp-protocol-2.6.1.amq-720004-redhat-1.jar:]
              at org.apache.activemq.artemis.protocol.amqp.proton.ProtonServerSenderContext.deliverMessage(ProtonServerSenderContext.java:681) [artemis-amqp-protocol-2.6.1.amq-720004-redhat-1.jar:]
              at org.apache.activemq.artemis.protocol.amqp.broker.AMQPSessionCallback.sendMessage(AMQPSessionCallback.java:643) [artemis-amqp-protocol-2.6.1.amq-720004-redhat-1.jar:]
              ... 12 more
      

      Attachments

        1. client_output.txt
          0.2 kB
        2. Program.cs
          2 kB

        Issue Links

          Activity

            People

              rh-ee-ataylor Andy Taylor
              rhn-support-tyamashi Tomonari Yamashita
              Votes:
              0 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: