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

AMQP Consumer fails to receive LargeMessage when Broker uses JDBC storage

    XMLWordPrintable

Details

    • Hide
      1. Setup a Broker with JDBC persistence.
      2. ./artemis producer --destination queue://exampleQueue --message-size 200000 --message-count 1 --user admin --password admin --url tcp://127.0.0.1:61616 --protocol amqp
      3. ./artemis consumer --user admin --password admin --url tcp://localhost:61616 --destination=queue://exampleQueue --protocol amqp
      Show
      Setup a Broker with JDBC persistence. ./artemis producer --destination queue://exampleQueue --message-size 200000 --message-count 1 --user admin --password admin --url tcp://127.0.0.1:61616 --protocol amqp ./artemis consumer --user admin --password admin --url tcp://localhost:61616 --destination=queue://exampleQueue --protocol amqp
    • Hide

      Disable LargeMessages increasing the threshold size

      Show
      Disable LargeMessages increasing the threshold size
    • ARTEMIS-3449

    Description

      AMQP Client is not able to receive large messages. When a LargeMessage is available on the address and the consumer try to consume it, the Broker throws an [1] and kick off the consumer from the address but leave it connected so the client doesn't receive any errors and remain connected.
      Restart the consumer or the broker doesn't fix the issue.

      The issue can be reproduce only if both the Consumer and Producer use AMQP.

        Producer AMQP Producer Coreanchor
      Consumer AMQP
      Consumer Core

      [1]

      2021-10-07 12:47:00,784 INFO  [org.apache.activemq.artemis.core.server.plugin.impl] AMQ841012: delivered message with message ID: 2157901002, to consumer on address: anagrafica.event.req.check.ok, queue: anagrafica.event.req.check.ok, consumer sessionID: e61d4e0d-275b-11ec-b42d-005056b7c0ab, consumerID: 0
      2021-10-07 12:47:00,856 WARN  [org.apache.activemq.artemis.protocol.amqp.proton.ProtonServerSenderContext] Array must not be empty or null: java.lang.IllegalArgumentException: Array must not be empty or null
      	at org.apache.qpid.proton.codec.CompositeReadableBuffer.append(CompositeReadableBuffer.java:688) [proton-j-0.33.8.redhat-00001.jar:0.33.8.redhat-00001]
      	at org.apache.qpid.proton.engine.impl.DeliveryImpl.send(DeliveryImpl.java:345) [proton-j-0.33.8.redhat-00001.jar:0.33.8.redhat-00001]
      	at org.apache.qpid.proton.engine.impl.SenderImpl.send(SenderImpl.java:74) [proton-j-0.33.8.redhat-00001.jar:0.33.8.redhat-00001]
      	at org.apache.activemq.artemis.protocol.amqp.proton.ProtonServerSenderContext$LargeMessageDeliveryContext.deliver(ProtonServerSenderContext.java:610) [artemis-amqp-protocol-2.18.0.redhat-00010.jar:2.18.0.redhat-00010]
      	at org.apache.activemq.artemis.protocol.amqp.proton.ProtonServerSenderContext.deliverLarge(ProtonServerSenderContext.java:786) [artemis-amqp-protocol-2.18.0.redhat-00010.jar:2.18.0.redhat-00010]
      	at org.apache.activemq.artemis.protocol.amqp.proton.ProtonServerSenderContext.executeDelivery(ProtonServerSenderContext.java:543) [artemis-amqp-protocol-2.18.0.redhat-00010.jar:2.18.0.redhat-00010]
      	at org.apache.activemq.artemis.core.server.impl.MessageReferenceImpl.run(MessageReferenceImpl.java:136) [artemis-server-2.18.0.redhat-00010.jar:2.18.0.redhat-00010]
      	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) [netty-all-4.1.66.Final-redhat-00001.jar:4.1.66.Final-redhat-00001]
      	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:469) [netty-all-4.1.66.Final-redhat-00001.jar:4.1.66.Final-redhat-00001]
      	at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:384) [netty-all-4.1.66.Final-redhat-00001.jar:4.1.66.Final-redhat-00001]
      	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) [netty-all-4.1.66.Final-redhat-00001.jar:4.1.66.Final-redhat-00001]
      	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-all-4.1.66.Final-redhat-00001.jar:4.1.66.Final-redhat-00001]
      	at org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118) [artemis-commons-2.18.0.redhat-00010.jar:2.18.0.redhat-00010]
      
      2021-10-07 12:47:00,856 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=anagrafica.event.req.check.ok, queue=QueueImpl[name=anagrafica.event.req.check.ok, postOffice=PostOfficeImpl [server=ActiveMQServerImpl::name=amq-terna-coll], temp=false]@14be49da, filter=null, name=anagrafica.event.req.check.ok, clusterName=anagrafica.event.req.check.ok6c7e63a3-26ae-11ec-a7d9-005056b7c0ab]], message=Reference[2157901002]:NON-RELIABLE:AMQPLargeMessage( [durable=false, messageID=2157901002, address=anagrafica.event.req.check.ok, size=0, applicationProperties={}, messageAnnotations={}, properties=null, extraProperties = TypedProperties[_AMQ_AD=anagrafica.event.req.check.ok]]: java.lang.IllegalArgumentException: Array must not be empty or null
      	at org.apache.qpid.proton.codec.CompositeReadableBuffer.append(CompositeReadableBuffer.java:688) [proton-j-0.33.8.redhat-00001.jar:0.33.8.redhat-00001]
      	at org.apache.qpid.proton.engine.impl.DeliveryImpl.send(DeliveryImpl.java:345) [proton-j-0.33.8.redhat-00001.jar:0.33.8.redhat-00001]
      	at org.apache.qpid.proton.engine.impl.SenderImpl.send(SenderImpl.java:74) [proton-j-0.33.8.redhat-00001.jar:0.33.8.redhat-00001]
      	at org.apache.activemq.artemis.protocol.amqp.proton.ProtonServerSenderContext$LargeMessageDeliveryContext.deliver(ProtonServerSenderContext.java:610) [artemis-amqp-protocol-2.18.0.redhat-00010.jar:2.18.0.redhat-00010]
      	at org.apache.activemq.artemis.protocol.amqp.proton.ProtonServerSenderContext.deliverLarge(ProtonServerSenderContext.java:786) [artemis-amqp-protocol-2.18.0.redhat-00010.jar:2.18.0.redhat-00010]
      	at org.apache.activemq.artemis.protocol.amqp.proton.ProtonServerSenderContext.executeDelivery(ProtonServerSenderContext.java:543) [artemis-amqp-protocol-2.18.0.redhat-00010.jar:2.18.0.redhat-00010]
      	at org.apache.activemq.artemis.core.server.impl.MessageReferenceImpl.run(MessageReferenceImpl.java:136) [artemis-server-2.18.0.redhat-00010.jar:2.18.0.redhat-00010]
      	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) [netty-all-4.1.66.Final-redhat-00001.jar:4.1.66.Final-redhat-00001]
      	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:469) [netty-all-4.1.66.Final-redhat-00001.jar:4.1.66.Final-redhat-00001]
      	at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:384) [netty-all-4.1.66.Final-redhat-00001.jar:4.1.66.Final-redhat-00001]
      	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) [netty-all-4.1.66.Final-redhat-00001.jar:4.1.66.Final-redhat-00001]
      	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-all-4.1.66.Final-redhat-00001.jar:4.1.66.Final-redhat-00001]
      	at org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118) [artemis-commons-2.18.0.redhat-00010.jar:2.18.0.redhat-00010]
      
      
      

       

      Attachments

        Issue Links

          Activity

            People

              csuconic@redhat.com Clebert Suconic
              rhn-support-agagliar Antonio Gagliardi
              Dominik Lenoch Dominik Lenoch
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: