Bug 997782

Summary: [QA] (6.4.0) Calling message.clearBody() on large message after failover throws RuntimeException
Product: [JBoss] JBoss Enterprise Application Platform 6 Reporter: Miroslav Novak <mnovak>
Component: HornetQAssignee: Justin Bertram <jbertram>
Status: CLOSED CURRENTRELEASE QA Contact: Miroslav Novak <mnovak>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 6.1.1CC: ataylor, jawilson, jbertram, kkhan, msvehla
Target Milestone: DR1   
Target Release: EAP 6.4.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 1132206 (view as bug list) Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1132168, 1132206    

Description Miroslav Novak 2013-08-16 08:26:26 UTC
Description of problem:

When client receives a large message and calls clearBody() on it during failover then RuntimeException is thrown. 

It seems that according to JMS API [1] there should be JMSException. 

[1] http://docs.oracle.com/javaee/6/api/javax/jms/Message.html#clearBody%28%29

Stack trace from receiver:
16:49:31,108 Thread-25 ERROR [org.jboss.qa.hornetq.apps.clients.ReceiverTransAck:161] Exception was thrown during receiving messages:
java.lang.RuntimeException: HQ119060: Large Message Transmission interrupted on consumer shutdown.
	at org.hornetq.core.client.impl.ClientLargeMessageImpl.getBodyBuffer(ClientLargeMessageImpl.java:103)
	at org.hornetq.jms.client.HornetQBytesMessage.getBuffer(HornetQBytesMessage.java:448)
	at org.hornetq.jms.client.HornetQBytesMessage.clearBody(HornetQBytesMessage.java:416)
	at org.jboss.qa.hornetq.apps.clients.Client.cleanMessage(Client.java:82)
	at org.jboss.qa.hornetq.apps.clients.ReceiverTransAck.receiveMessage(ReceiverTransAck.java:343)
	at org.jboss.qa.hornetq.apps.clients.ReceiverTransAck.run(ReceiverTransAck.java:130)
Caused by: HornetQException[errorType=LARGE_MESSAGE_INTERRUPTED message=HQ119060: Large Message Transmission interrupted on consumer shutdown.]
	at org.hornetq.core.client.impl.LargeMessageControllerImpl.cancel(LargeMessageControllerImpl.java:236)
	at org.hornetq.core.client.impl.ClientConsumerImpl.resetLargeMessageController(ClientConsumerImpl.java:801)
	at org.hornetq.core.client.impl.ClientConsumerImpl.clearAtFailover(ClientConsumerImpl.java:528)
	at org.hornetq.core.client.impl.ClientSessionImpl.handleFailover(ClientSessionImpl.java:1167)
	at org.hornetq.core.client.impl.ClientSessionFactoryImpl.reconnectSessions(ClientSessionFactoryImpl.java:1041)
	at org.hornetq.core.client.impl.ClientSessionFactoryImpl.failoverOrReconnect(ClientSessionFactoryImpl.java:710)
	at org.hornetq.core.client.impl.ClientSessionFactoryImpl.handleConnectionFailure(ClientSessionFactoryImpl.java:580)
	at org.hornetq.core.client.impl.ClientSessionFactoryImpl.access$100(ClientSessionFactoryImpl.java:85)
	at org.hornetq.core.client.impl.ClientSessionFactoryImpl$1.run(ClientSessionFactoryImpl.java:426)
	at org.hornetq.utils.OrderedExecutorFactory$OrderedExecutor$1.run(OrderedExecutorFactory.java:106)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1156)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:626)
	at java.lang.Thread.run(Thread.java:780)

Comment 5 Justin Bertram 2014-07-22 20:15:05 UTC
This is fixed on the 2.3.x branch of HornetQ via commit f519f1e25207121fe81e351ac1c3797fef62087e.

Comment 6 Kabir Khan 2014-08-24 11:00:09 UTC
Appears to be fixed by HQ upgrade to 2.3.21 https://bugzilla.redhat.com/show_bug.cgi?id=1132168. Setting to MODIFIED.

Comment 7 Martin Svehla 2014-09-17 13:37:14 UTC
Verified in EAP 6.4.0.DR1.1