[ 
https://issues.apache.org/jira/browse/ARTEMIS-5308?focusedWorklogId=956987&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-956987
 ]

ASF GitHub Bot logged work on ARTEMIS-5308:
-------------------------------------------

                Author: ASF GitHub Bot
            Created on: 13/Feb/25 22:06
            Start Date: 13/Feb/25 22:06
    Worklog Time Spent: 10m 
      Work Description: clebertsuconic commented on code in PR #5499:
URL: https://github.com/apache/activemq-artemis/pull/5499#discussion_r1955278702


##########
tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/replication/ReplicationTest.java:
##########
@@ -363,6 +363,60 @@ public void testSendPacketsWithFailure() throws Exception {
       }
    }
 
+   @TestTemplate
+   public void testSendMessageWithLargeHeader() throws Exception {
+      setupServer(true, TestInterceptor.class.getName());
+
+      manager = liveServer.getReplicationManager();
+      waitForComponent(manager);
+
+      ClientSessionFactory sf = createSessionFactory(locator);
+
+      try (ClientSession producerSession = sf.createSession();
+           ClientSession consumerSession = sf.createSession()) {
+
+         producerSession.start();
+         producerSession.createQueue(QueueConfiguration.of(ADDRESS));
+         ClientProducer producer = producerSession.createProducer(ADDRESS);
+
+         consumerSession.start();
+         ClientConsumer consumer = consumerSession.createConsumer(ADDRESS);
+
+         ClientMessage messageBefore = producerSession.createMessage(true);
+         setBody(0, messageBefore);
+         messageBefore.putIntProperty("counter", 0);
+         producer.send(messageBefore);
+
+         ClientMessage messageReceivedBefore = consumer.receive(1000);
+         assertNotNull(messageReceivedBefore, "Message should exist!");
+         assertMessageBody(0, messageReceivedBefore);
+         assertEquals(0, 
messageReceivedBefore.getIntProperty("counter").intValue());
+         messageReceivedBefore.acknowledge();
+
+         ClientMessage messageWithLargeHeader = 
producerSession.createMessage(true);
+         setBody(1, messageWithLargeHeader);
+         messageWithLargeHeader.putIntProperty("counter", 1);
+         messageWithLargeHeader.putStringProperty("large-property", 
"z".repeat(512 * 1024));
+         try {
+            producer.send(messageWithLargeHeader);
+            fail();
+         } catch (Exception e) {
+            assertTrue(e.getMessage().contains("AMQ149005"));
+         }
+
+         ClientMessage messageAfter = producerSession.createMessage(true);
+         setBody(2, messageAfter);
+         messageAfter.putIntProperty("counter", 2);
+         producer.send(messageAfter);
+
+         ClientMessage messageReceivedAfter = consumer.receive(1000);
+         assertNotNull(messageReceivedAfter, "Message should exist!");
+         assertMessageBody(2, messageReceivedAfter);
+         assertEquals(2, 
messageReceivedAfter.getIntProperty("counter").intValue());
+         messageReceivedAfter.acknowledge();

Review Comment:
   It's such a small thing.. I'm doing it myself and amending it as your 
commit...





Issue Time Tracking
-------------------

    Worklog Id:     (was: 956987)
    Time Spent: 1h 40m  (was: 1.5h)

> Messages are blocked after sending too large header
> ---------------------------------------------------
>
>                 Key: ARTEMIS-5308
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-5308
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>            Reporter: Domenico Francesco Bruscino
>            Assignee: Domenico Francesco Bruscino
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 1h 40m
>  Remaining Estimate: 0h
>
> 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)
> {code:java}
> [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/:?]
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact


Reply via email to