]
James Perkins updated WFLY-10817:
---------------------------------
Fix Version/s: 14.0.0.Final
Incorrect data check when clearing body of large compressed message
after failover
----------------------------------------------------------------------------------
Key: WFLY-10817
URL:
https://issues.jboss.org/browse/WFLY-10817
Project: WildFly
Issue Type: Bug
Components: JMS
Affects Versions: 13.0.0.Final
Reporter: Erich Duda
Assignee: Jeff Mesnil
Priority: Critical
Fix For: 14.0.0.Final
*Scenario*
* There are two WildFly (Artemis) servers in dedicated shared store HA topology
* Connection factory is configured to compress large messages
* Live server is killed
* Clients do failover to backup
After the clients do failover to backup, I can see following exceptions in the log when a
receiver tries to clear body of large message. The test fails because of lost messages.
I can see this issue with Artemis 1.5.5.jbossorg-012.
I am not able to reproduce it locally but I hit it on Jenkins every time.
{code}
javax.jms.JMSException: AMQ119029: Error writing body of message
at
org.apache.activemq.artemis.jms.client.ActiveMQBytesMessage.clearBody(ActiveMQBytesMessage.java:337)
at org.jboss.qa.hornetq.apps.clients.Client.cleanMessage(Client.java:144)
at
org.jboss.qa.hornetq.apps.clients.Receiver11.receiveMessage(Receiver11.java:153)
at
org.jboss.qa.hornetq.apps.clients.ReceiverTransAck.run(ReceiverTransAck.java:89)
Caused by: java.lang.RuntimeException: AMQ119029: Error writing body of message
at
org.apache.activemq.artemis.core.client.impl.ClientLargeMessageImpl.getBodyBuffer(ClientLargeMessageImpl.java:93)
at
org.apache.activemq.artemis.jms.client.ActiveMQBytesMessage.getBuffer(ActiveMQBytesMessage.java:363)
at
org.apache.activemq.artemis.jms.client.ActiveMQBytesMessage.clearBody(ActiveMQBytesMessage.java:335)
... 3 more
Caused by: ActiveMQLargeMessageException[errorType=LARGE_MESSAGE_ERROR_BODY
message=AMQ119029: Error writing body of message]
at
org.apache.activemq.artemis.core.client.impl.LargeMessageControllerImpl.sendPacketToOutput(LargeMessageControllerImpl.java:1077)
at
org.apache.activemq.artemis.core.client.impl.LargeMessageControllerImpl.setOutputStream(LargeMessageControllerImpl.java:258)
at
org.apache.activemq.artemis.core.client.impl.CompressedLargeMessageControllerImpl.setOutputStream(CompressedLargeMessageControllerImpl.java:75)
at
org.apache.activemq.artemis.core.client.impl.CompressedLargeMessageControllerImpl.saveBuffer(CompressedLargeMessageControllerImpl.java:80)
at
org.apache.activemq.artemis.core.client.impl.ClientLargeMessageImpl.checkBuffer(ClientLargeMessageImpl.java:159)
at
org.apache.activemq.artemis.core.client.impl.ClientLargeMessageImpl.getBodyBuffer(ClientLargeMessageImpl.java:91)
... 5 more
Caused by: java.io.IOException: incorrect data check
at
org.apache.activemq.artemis.utils.InflaterWriter.close(InflaterWriter.java:81)
at
org.apache.activemq.artemis.core.client.impl.LargeMessageControllerImpl.sendPacketToOutput(LargeMessageControllerImpl.java:1074)
... 10 more
Caused by: java.util.zip.DataFormatException: incorrect data 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.artemis.utils.InflaterWriter.close(InflaterWriter.java:77)
... 11 more
{code}