[ https://issues.apache.org/jira/browse/AMQ-6142?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15121768#comment-15121768 ]
Claudio Tagliola commented on AMQ-6142: --------------------------------------- {noformat] package com.foo.bar.activemqtest; import javax.jms.*; import javax.jms.Connection; import javax.jms.Message; import org.apache.activemq.*; import org.apache.activemq.broker.*; import org.junit.*; public class ActiveMQBytesMessageCorruptionTest { private volatile AssertionError assertionError; @Test public void bytesMessageCorruption() throws Exception { BrokerService brokerService = new BrokerService(); brokerService.setBrokerName("embedded"); brokerService.setPersistent(false); brokerService.start(); ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://embedded"); connectionFactory.setUseCompression(true); Connection connection = connectionFactory.createConnection(); connection.start(); for (int i = 0; i < 10; i++) { Session mySession = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); mySession.createConsumer(mySession.createTopic("foo.bar")).setMessageListener(this::onMessage); } Session producerSession = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer messageProducer = producerSession.createProducer(producerSession.createTopic("foo.bar")); for (int i = 0; i < 1000; i++) { BytesMessage bytesMessage = producerSession.createBytesMessage(); bytesMessage.writeBytes(new byte[0]); messageProducer.send(bytesMessage); if (assertionError != null) { throw assertionError; } } } private void onMessage(Message message) { try { ((BytesMessage) message).getBodyLength(); } catch (JMSException | Error e) { assertionError = new AssertionError("Exception in thread", e); } } } {noformat} Unit test will fail most of the time with: {noformat} java.lang.AssertionError: Exception in thread at com.foo.bar.activemqtest.ActiveMQBytesMessageCorruptionTest.onMessage(ActiveMQBytesMessageCorruptionTest.java:60) at org.apache.activemq.ActiveMQMessageConsumer.dispatch(ActiveMQMessageConsumer.java:1393) at org.apache.activemq.ActiveMQSessionExecutor.dispatch(ActiveMQSessionExecutor.java:131) at org.apache.activemq.ActiveMQSessionExecutor.iterate(ActiveMQSessionExecutor.java:202) at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:133) at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:48) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.OutOfMemoryError: Java heap space at org.apache.activemq.command.ActiveMQBytesMessage.decompress(ActiveMQBytesMessage.java:897) at org.apache.activemq.command.ActiveMQBytesMessage.initializeReading(ActiveMQBytesMessage.java:876) at org.apache.activemq.command.ActiveMQBytesMessage.getBodyLength(ActiveMQBytesMessage.java:198) at com.foo.bar.activemqtest.ActiveMQBytesMessageCorruptionTest.onMessage(ActiveMQBytesMessageCorruptionTest.java:56) at com.foo.bar.activemqtest.ActiveMQBytesMessageCorruptionTest$$Lambda$3/665188480.onMessage(Unknown Source) ... 8 more {noformat} > ActiveMQBytesMessage decompress throws DataFormatException incorrect header > check > --------------------------------------------------------------------------------- > > Key: AMQ-6142 > URL: https://issues.apache.org/jira/browse/AMQ-6142 > Project: ActiveMQ > Issue Type: Bug > Components: Broker > Affects Versions: 5.10.2, 5.12.1, 5.11.3, 5.13.0 > Reporter: Claudio Tagliola > Attachments: Client.java, MessageListener.java, Server.java, pom.xml > > > In our environment we use an embedded broker. On one topic where compression > is enabled, the server is also listening in on the messages. From ActiveMQ > 5.10.0 up to 5.13.0, we encounter DataFormatException: incorrect header check > exceptions on the tcp clients due to corruption of the payload. Attached are > a test server and client. At some point, the client will exit due to > mentioned exception. Increase chances by running multiple clients. This > scenario works with 5.8.0 and 5.9.1. > If the server has multiple consumers on the same topic, they will encounter > corruption as well, but this has other side-effects. -- This message was sent by Atlassian JIRA (v6.3.4#6332)