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

Forwarding Compressed messages to an embedded Broker throw errors

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 2.16.0
    • None
    • Broker
    • None
    • Linux tarek02 4.4.0-78-generic #99-Ubuntu SMP Thu Apr 27 15:29:09 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

    Description

      A process receives a compressed message from a global broker. The message is simply forwarded to an embedded broker which in-turn throws a compression exception. I set the random byte array size to be 150k which is greater than the default 100k min compression size. Dropping that number to a lower number (100k or below) does not exhibit the issue. Attached is a test program that fails every time.

      [2021-02-16 15:51:24,691 EST] INFO  TestSendReciveOnEmbedded [main] Got a connection 
      [2021-02-16 15:51:24,809 EST] INFO  TestSendReciveOnEmbedded [Thread-0 (ActiveMQ-client-global-threads)] Forward:ActiveMQMessage[ID:bb78fb83-7098-11eb-9dc4-8a8eef5d4c5d]:NON-PERSISTENT/ClientLargeMessageImpl[messageID=2328, durable=false, address=testerTopic,userID=bb78fb83-7098-11eb-9dc4-8a8eef5d4c5d,properties=TypedProperties[__AMQ_CID=bb76d8a0-7098-11eb-9dc4-8a8eef5d4c5d,_AMQ_LARGE_COMPRESSED=true,_AMQ_LARGE_SIZE=150100,_AMQ_ROUTING_TYPE=0]] 
      [2021-02-16 15:51:24,824 EST] INFO  message [Thread-1 (ActiveMQ-server-org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl$6@47289387)] AMQ601501: User anonymous@invm:0 is consuming a message from ebf8ed65-316a-4bf9-b665-d87e9621c0b8 
      [2021-02-16 15:51:24,849 EST] ERROR client [Thread-1 (ActiveMQ-client-global-threads)] AMQ134003: Message Listener failed to prepare message for receipt, message=ClientLargeMessageImpl[messageID=20, durable=false, address=testerTopic,userID=bb82bf84-7098-11eb-9dc4-8a8eef5d4c5d,properties=TypedProperties[__AMQ_CID=bb146d40-7098-11eb-9dc4-8a8eef5d4c5d,_AMQ_LARGE_COMPRESSED=true,_AMQ_LARGE_SIZE=150100,_AMQ_ROUTING_TYPE=0]] 
      org.apache.activemq.artemis.api.core.ActiveMQLargeMessageException: AMQ219029: Error writing body of message
        at org.apache.activemq.artemis.core.client.impl.LargeMessageControllerImpl.sendPacketToOutput(LargeMessageControllerImpl.java:1112)
        at org.apache.activemq.artemis.core.client.impl.LargeMessageControllerImpl.setOutputStream(LargeMessageControllerImpl.java:257)
        at org.apache.activemq.artemis.core.client.impl.CompressedLargeMessageControllerImpl.setOutputStream(CompressedLargeMessageControllerImpl.java:74)
        at org.apache.activemq.artemis.core.client.impl.CompressedLargeMessageControllerImpl.saveBuffer(CompressedLargeMessageControllerImpl.java:79)
        at org.apache.activemq.artemis.core.client.impl.ClientLargeMessageImpl.checkBuffer(ClientLargeMessageImpl.java:159)
        at org.apache.activemq.artemis.core.client.impl.ClientLargeMessageImpl.checkCompletion(ClientLargeMessageImpl.java:84)
        at org.apache.activemq.artemis.jms.client.ActiveMQMessage.doBeforeReceive(ActiveMQMessage.java:801)
        at org.apache.activemq.artemis.jms.client.ActiveMQObjectMessage.doBeforeReceive(ActiveMQObjectMessage.java:100)
        at org.apache.activemq.artemis.jms.client.JMSMessageListenerWrapper.onMessage(JMSMessageListenerWrapper.java:93)
        at org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:1030)
        at org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.access$400(ClientConsumerImpl.java:49)
        at org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:1153)
        at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42)
        at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31)
        at org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:65)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
      Caused by: java.io.IOException: Error decompressing data
        at org.apache.activemq.artemis.utils.InflaterWriter.write(InflaterWriter.java:62)
        at java.base/java.io.OutputStream.write(OutputStream.java:157)
        at java.base/java.io.OutputStream.write(OutputStream.java:122)
        at org.apache.activemq.artemis.core.client.impl.LargeMessageControllerImpl.sendPacketToOutput(LargeMessageControllerImpl.java:1106)
        ... 17 common frames omitted
      Caused by: java.util.zip.DataFormatException: incorrect header check
        at java.base/java.util.zip.Inflater.inflateBytesBytes(Native Method)
        at java.base/java.util.zip.Inflater.inflate(Inflater.java:378)
        at java.base/java.util.zip.Inflater.inflate(Inflater.java:464)
        at org.apache.activemq.artemis.utils.InflaterWriter.doWrite(InflaterWriter.java:90)}}
        at org.apache.activemq.artemis.utils.InflaterWriter.write(InflaterWriter.java:60)
        ... 20 common frames omitted
      

      Attachments

        1. TestSendReciveOnEmbedded.java
          5 kB
          Tarek Hammoud
        2. local-only.xml
          10 kB
          Tarek Hammoud

        Activity

          People

            Unassigned Unassigned
            thammoud Tarek Hammoud
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: