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

AMQP Consumer fails to receive LargeMessage when Broker uses JDBC storage

XMLWordPrintable

    • False
    • False
    • ARTEMIS-3449
    • Hide

      Disable LargeMessages increasing the threshold size

      Show
      Disable LargeMessages increasing the threshold size
    • 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

      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]
      
      
      

       

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

                Created:
                Updated:
                Resolved: