[jira] [Comment Edited] (AMQ-6142) ActiveMQBytesMessage decompress throws DataFormatException incorrect header check
[ https://issues.apache.org/jira/browse/AMQ-6142?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15232035#comment-15232035 ] Christopher L. Shannon edited comment on AMQ-6142 at 4/8/16 11:14 AM: -- Yep agreed, lets roll back the sync I added. I think the Jira reported for AMQ-5857 was about client side and not the broker side (since reduceMemoryFootprint exists to clear the duplicate state, at least for queues). I would say we either need to roll that commit back as well or maybe figure out a way so that the client can clear out the state but the broker won't clear it out until it is safe to do so. was (Author: christopher.l.shannon): Yep agreed, lets roll back the sync I added. I think the Jira reported for AMQ-5857 was about client side and not the broker side (since reduceMemoryFootprint exists to clear the duplicate state, at least for queues). I would say we either need to roll that back that commit as well or maybe figure out a way so that the client can clear out the state but the broker won't clear it out until it is safe to do so. > 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 >Assignee: Christopher L. Shannon > Fix For: 5.13.1, 5.14.0 > > Attachments: Client.java, MessageListener.java, Server.java, > amq-6142.diff, 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)
[jira] [Comment Edited] (AMQ-6142) ActiveMQBytesMessage decompress throws DataFormatException incorrect header check
[ https://issues.apache.org/jira/browse/AMQ-6142?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15230472#comment-15230472 ] Gary Tully edited comment on AMQ-6142 at 4/7/16 6:35 PM: - [~cshannon] I think rolling back the sync is best, then thinking of mutation being ok on your own copy which implies maybe doing more copies and those not sharing mutable state. Client side there is typically a copy per consumer. Broker side there is a single copy of the message at the moment and the reduceMemoryFootPrint policy can control whacking the duplicate state on send/store for a queue. concurrentStoreAndDispatch muddies that a bit. was (Author: gtully): [~cshannon] I think rolling back the sync is best, then thinking of mutation being ok on your own copy which implies maybe doing more copies and those not sharing mutable state. Client side there is typically a copy per consumer. Broker side there is a single copy of the message at the moment and the reduceMemoryFootPrint policy can control whacking the duplicate state on send/store for a queue. concurrentStoreAndDispatch muddies that a bit. For topics, maybe when the message is invm, we force a marshall/store on the send and can be done with a single shared message. Because each consumer may or may not want marshalling it is a little tricky, but it is only vm consumers that would not marshall. > 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 >Assignee: Christopher L. Shannon > Fix For: 5.13.1, 5.14.0 > > Attachments: Client.java, MessageListener.java, Server.java, > amq-6142.diff, 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)
[jira] [Comment Edited] (AMQ-6142) ActiveMQBytesMessage decompress throws DataFormatException incorrect header check
[ https://issues.apache.org/jira/browse/AMQ-6142?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15228649#comment-15228649 ] Christopher L. Shannon edited comment on AMQ-6142 at 4/6/16 5:02 PM: - [~gtully], Seems like this same issue reported in AMQ-6218 that caused me to add synchronization has also come up before in AMQ-2966. What do you think about rolling back the fix I added from AMQ-5857 that clears out the text field after marshalling? That was the start of all of these issues since state is now mutated and before it wasn't. The downside is that the data would once again be stored twice leading to possible OOM issues, including for clients which is why originally AMQ-5857 was submitted. So it would be nice to be able to clear it out but not if other concurrent issues keep popping up. Also, on a related note having to do with changing message state during dispatch, as I was digging back through some of this stuff I was looking at the reduceMemoryFootPrint flag and wondering if it could be applied to topics. I'm guessing it caused issues before so it wasn't applied (maybe with concurrent store and dispatch for topics) but it would be useful to be able to turn it on, especially if concurrent store and dispatch is off, which is the default. was (Author: christopher.l.shannon): [~Gary Tully], Seems like this same issue reported in AMQ-6218 that caused me to add synchronization has also come up before in AMQ-2966. What do you think about rolling back the fix I added from AMQ-5857 that clears out the text field after marshalling? That was the start of all of these issues since state is now mutated and before it wasn't. The downside is that the data would once again be stored twice leading to possible OOM issues, including for clients which is why originally AMQ-5857 was submitted. So it would be nice to be able to clear it out but not if other concurrent issues keep popping up. Also, on a related note having to do with changing message state during dispatch, as I was digging back through some of this stuff I was looking at the reduceMemoryFootPrint flag and wondering if it could be applied to topics. I'm guessing it caused issues before so it wasn't applied (maybe with concurrent store and dispatch for topics) but it would be useful to be able to turn it on, especially if concurrent store and dispatch is off, which is the default. > 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 >Assignee: Christopher L. Shannon > Fix For: 5.13.1, 5.14.0 > > Attachments: Client.java, MessageListener.java, Server.java, > amq-6142.diff, 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)
[jira] [Comment Edited] (AMQ-6142) ActiveMQBytesMessage decompress throws DataFormatException incorrect header check
[ https://issues.apache.org/jira/browse/AMQ-6142?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15115226#comment-15115226 ] Claudio Tagliola edited comment on AMQ-6142 at 1/25/16 2:02 PM: Stack trace: {noformat} javax.jms.JMSException: java.util.zip.DataFormatException: incorrect header check at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:72) at org.apache.activemq.command.ActiveMQBytesMessage.initializeReading(ActiveMQBytesMessage.java:884) at org.apache.activemq.command.ActiveMQBytesMessage.getBodyLength(ActiveMQBytesMessage.java:198) at com.foo.bar.activemqtest.MessageListener.onMessage(MessageListener.java:11) 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.io.IOException: java.util.zip.DataFormatException: incorrect header check at org.apache.activemq.command.ActiveMQBytesMessage.decompress(ActiveMQBytesMessage.java:902) at org.apache.activemq.command.ActiveMQBytesMessage.initializeReading(ActiveMQBytesMessage.java:876) ... 10 more Caused by: java.util.zip.DataFormatException: incorrect header check at java.util.zip.Inflater.inflateBytes(Native Method) at java.util.zip.Inflater.inflate(Inflater.java:259) at java.util.zip.Inflater.inflate(Inflater.java:280) at org.apache.activemq.command.ActiveMQBytesMessage.decompress(ActiveMQBytesMessage.java:898) ... 11 more {noformat} was (Author: tagliola): Stack trace: {noformat} javax.jms.JMSException: java.util.zip.DataFormatException: incorrect header check at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:72) at org.apache.activemq.command.ActiveMQBytesMessage.initializeReading(ActiveMQBytesMessage.java:884) at org.apache.activemq.command.ActiveMQBytesMessage.getBodyLength(ActiveMQBytesMessage.java:198) at com.imc.activemqtest.MessageListener.onMessage(MessageListener.java:11) 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.io.IOException: java.util.zip.DataFormatException: incorrect header check at org.apache.activemq.command.ActiveMQBytesMessage.decompress(ActiveMQBytesMessage.java:902) at org.apache.activemq.command.ActiveMQBytesMessage.initializeReading(ActiveMQBytesMessage.java:876) ... 10 more Caused by: java.util.zip.DataFormatException: incorrect header check at java.util.zip.Inflater.inflateBytes(Native Method) at java.util.zip.Inflater.inflate(Inflater.java:259) at java.util.zip.Inflater.inflate(Inflater.java:280) at org.apache.activemq.command.ActiveMQBytesMessage.decompress(ActiveMQBytesMessage.java:898) ... 11 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 > > In our environment we use an embedded broker. On one topic, 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.