Uploaded image for project: 'ActiveMQ Artemis'
  1. ActiveMQ Artemis
  2. ARTEMIS-5308

Messages are blocked after sending too large header

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 2.40.0
    • None

    Description

      When using a high available setup, an issue occurs when sending a message with a header that is too large. The main broker rejects the message, but at the same time, it seems that it is trying to perform replication to the backup broker.

      The backup broker also rejects this replication message, but after this it seems that all further messages are blocked. Only after killing the backup broker, the messages will be processed. Seems like this is related to journal related operations being blocked until backup acknowledges the completion of synchronization (https://activemq.apache.org/components/artemis/documentation/latest/ha.html#replication)

      [Thread-2 (org.apache.activemq.artemis.core.remoting.impl.invm.InVMConnector)] 17:41:25,854 WARN  [org.apache.activemq.artemis.core.server] AMQ222086: error handling packet ReplicationAddTXMessage[type=92, channelID=2, responseAsync=false, requiresResponse=false, correlationID=-1] for replication
      org.apache.activemq.artemis.api.core.ActiveMQIOErrorException: AMQ149005: Message of 524513 bytes is bigger than the max record size of 102400 bytes. You should try to move large application properties to the message body.
      	at org.apache.activemq.artemis.core.journal.impl.JournalImpl.checkRecordSize(JournalImpl.java:1011) ~[classes/:?]
      	at org.apache.activemq.artemis.core.journal.impl.JournalImpl.appendAddRecordTransactional(JournalImpl.java:1269) ~[classes/:?]
      	at org.apache.activemq.artemis.core.journal.Journal.appendAddRecordTransactional(Journal.java:188) ~[classes/:?]
      	at org.apache.activemq.artemis.core.journal.impl.JournalBase.appendAddRecordTransactional(JournalBase.java:115) ~[classes/:?]
      	at org.apache.activemq.artemis.core.journal.impl.JournalImpl.appendAddRecordTransactional(JournalImpl.java:105) ~[classes/:?]
      	at org.apache.activemq.artemis.core.replication.ReplicationEndpoint.handleAppendAddTXRecord(ReplicationEndpoint.java:766) ~[classes/:?]
      	at org.apache.activemq.artemis.core.replication.ReplicationEndpoint.handlePacket(ReplicationEndpoint.java:211) ~[classes/:?]
      	at org.apache.activemq.artemis.core.protocol.core.impl.ChannelImpl.handlePacket(ChannelImpl.java:852) ~[classes/:?]
      	at org.apache.activemq.artemis.core.protocol.core.impl.RemotingConnectionImpl.doBufferReceived(RemotingConnectionImpl.java:419) ~[classes/:?]
      	at org.apache.activemq.artemis.core.protocol.core.impl.RemotingConnectionImpl.bufferReceived(RemotingConnectionImpl.java:392) ~[classes/:?]
      	at org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl$DelegatingBufferHandler.bufferReceived(ClientSessionFactoryImpl.java:1334) ~[classes/:?]
      	at org.apache.activemq.artemis.core.remoting.impl.invm.InVMConnection$1.run(InVMConnection.java:223) ~[classes/:?]
      	at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:57) ~[classes/:?]
      	at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:32) ~[classes/:?]
      	at org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:68) ~[classes/:?]
      	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]
      	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]
      	at org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118) [classes/:?]
      [Thread-4 (ActiveMQ-server-ActiveMQServerImpl::Server 1)] 17:41:25,887 WARN  [org.apache.activemq.artemis.protocol.amqp.broker.AMQPSessionCallback] AMQ149005: Message of 524513 bytes is bigger than the max record size of 102400 bytes. You should try to move large application properties to the message body.
      org.apache.activemq.artemis.api.core.ActiveMQIOErrorException: AMQ149005: Message of 524513 bytes is bigger than the max record size of 102400 bytes. You should try to move large application properties to the message body.
      	at org.apache.activemq.artemis.core.journal.impl.JournalImpl.checkRecordSize(JournalImpl.java:1011) ~[classes/:?]
      	at org.apache.activemq.artemis.core.journal.impl.JournalImpl.appendAddRecordTransactional(JournalImpl.java:1269) ~[classes/:?]
      	at org.apache.activemq.artemis.core.replication.ReplicatedJournal.appendAddRecordTransactional(ReplicatedJournal.java:192) ~[classes/:?]
      	at org.apache.activemq.artemis.core.persistence.impl.journal.AbstractJournalStorageManager.storeMessageTransactional(AbstractJournalStorageManager.java:571) ~[classes/:?]
      	at org.apache.activemq.artemis.core.postoffice.impl.PostOfficeImpl.storeDurableReference(PostOfficeImpl.java:1790) ~[classes/:?]
      	at org.apache.activemq.artemis.core.postoffice.impl.PostOfficeImpl.processRouteToDurableQueues(PostOfficeImpl.java:1770) ~[classes/:?]
      	at org.apache.activemq.artemis.core.postoffice.impl.PostOfficeImpl.processRoute(PostOfficeImpl.java:1706) ~[classes/:?]
      	at org.apache.activemq.artemis.core.postoffice.impl.PostOfficeImpl.route(PostOfficeImpl.java:1244) ~[classes/:?]
      	at org.apache.activemq.artemis.core.postoffice.impl.PostOfficeImpl.route(PostOfficeImpl.java:1135) ~[classes/:?]
      	at org.apache.activemq.artemis.core.server.impl.ServerSessionImpl.doSend(ServerSessionImpl.java:2368) ~[classes/:?]
      	at org.apache.activemq.artemis.core.server.impl.ServerSessionImpl.send(ServerSessionImpl.java:1963) ~[classes/:?]
      	at org.apache.activemq.artemis.protocol.amqp.broker.AMQPSessionCallback.inSessionSend(AMQPSessionCallback.java:624) ~[classes/:?]
      	at org.apache.activemq.artemis.protocol.amqp.broker.AMQPSessionCallback.lambda$serverSend$2(AMQPSessionCallback.java:580) ~[classes/:?]
      	at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:57) ~[classes/:?]
      	at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:32) ~[classes/:?]
      	at org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:68) ~[classes/:?]
      	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]
      	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]
      	at org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118) [classes/:?]
      

      Attachments

        Issue Links

          Activity

            People

              brusdev Domenico Francesco Bruscino
              brusdev Domenico Francesco Bruscino
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 2.5h
                  2.5h