PK27230: WSAS 5.0.X AND 5.1.X WILL ROLL BACK A TRANSACTION TO MQ 5.3 CSD12 OR LATER INSTEAD OF MARKING IT FOR ROLL BACK. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() APAR status Closed as program error. Error description When WebSphere Application Server (WAS) decides to roll back a failed transaction, it issues an xa_end() followed by an xa_rollback() to the queue manager. Prior to WebSphere MQ (WMQ) Version 5.3 CSD12, when the xa_end() was issued, the queue manager simply marked the transaction for rollback. The transaction would then be rolled back when xa_rollback() was called. However, when using WMQ 5.3 CSD12 (or later), the queue manager will actually roll back the transaction when xa_end() is called. When the application server then calls xa_rollback(), the queue manager returns the error code XA_RBROLLBACK, as the transaction has already been rolled back. This behavior will be changed back to marked for roll back. The exception will most likely look like: [6/7/06 11:07:49:019 CEST] 1883883b XATransaction E J2CA0027E: An exception occurred while invoking rollback on an XA Resource Adapter from dataSource JMS$ConnectionFactory <JMSConnFactory>, within transaction ID {<XID>}: javax.transaction.xa.XAException: XA operation failed, see errorCode at com.ibm.mq.MQXAResource.rollback(MQXAResource.java:379) at com.ibm.ejs.jms.JMSManagedSession$JMSXAResource.rollback(JMSMana gedSesson.java:1311) at com.ibm.ejs.j2c.XATransactionWrapper.rollback(XATransactionWrapp er.java 1266)..Local fix Problem summary **************************************************************** * USERS AFFECTED: This problem affects customers who use * * WebSphere MQ Version 5.3 or Version 6.x as * * the JMS provider for WebSphere Application * * Server Version 5.x. * **************************************************************** * PROBLEM DESCRIPTION: When using WebSphere Application * * Server Version 5.x with WebSphere MQ * * Version 5.3 Fix Pack 12 (or later) * * or WebSphere MQ Version 6.0 Refresh * * Pack 1 (6.0.1.0) as the JMS provider, * * the following error appears in the * * application server's SystemOut.log * * file when a message is rolled back: * * * * J2CA0027E: An exception occurred while * * invoking rollback on an XA Resource * * Adapter from dataSource <queue * * connection factory>, within * * transaction ID <XID>: * * javax.transaction.xa.XAException: * * XA operation failed, see errorCode * * at com.ibm.mq.MQXAResource. * * rollback(MQXAResource.java:379) * * at com.ibm.ejs.jms. * * JMSManagedSession$JMSXAResource. * * rollback * * (JMSManagedSession.java:1311) * * at com.ibm.ejs.j2c. * * XATransactionWrapper.rollback * * (XATransactionWrapper.java:1266) * * : : : : : : : : * * Encountered an XA resource error * * during an XA rollback operation: * * error code: * * XA_RBROLLBACK * * javax.transaction.xa.XAException: XA * * operation failed, see errorCode * * at com.ibm.mq.MQXAResource. * * rollback(MQXAResource.java:379) * * at com.ibm.ejs.jms. * * JMSManagedSession$JMSXAResource. * * rollback * * (JMSManagedSession.java:1311) * * at com.ibm.ejs.j2c. * * XATransactionWrapper.rollback * * (XATransactionWrapper.java:1266) * * at com.ibm.ejs.jts.jta.portable. * * JTAXAResourceImpl.rollback * * (JTAXAResourceImpl.java:616) * * : : : : : : : : * **************************************************************** * RECOMMENDATION: * **************************************************************** This problem was caused by a change in behaviour introduced by WebSphere MQ APAR IY76314 (shipped as part of WebSphere MQ Version 5.3 Fix Pack 12 and WebSphere MQ Version 6.0 Refresh Pack 1 (6.0.1.0)). When WebSphere Application Server decides to roll back a failed transaction, it issues an xa_end() followed by an xa_rollback() to the queue manager. Any errors thrown by the queue manager when xa_end() is called are ignored. Prior to APAR IY76314, when the xa_end() was issued, the queue manager simply marked the transaction for rollback. The transaction would then be rolled back when xa_rollback() was called. However, when using WMQ 5.3 CSD12 (or later) or WMQ 6.0.1.0 (or later), the queue manager will actually roll back the transaction when xa_end() is called. When the application server then calls xa_rollback(), the queue manager returns XA_RBROLLBACK, as the transaction has already been rolled back. As the application server is not expecting this return code, it throws the J2CA0027E error mentioned above. However, it is perfectly valid for WMQ to return this return code if it has previously told the application server that it has rolled back the message while processing the xa_end(). It does this by returning XA_RBROLLBACK from xa_end(). The application server ignores this, as it is a valid return value.Problem conclusion In order to fix the problem, the JMSManagedSession class has been modified to store the ignored exception, should one be returned from xa_end(). If an exception occurs in xa_rollback(), a check is made to see if this is the same exception as was previously received from xa_end(). If it is, then the exception is swallowed up - however, if the exceptions are different, it is rethrown to the caller. The fix for this APAR is currently targeted for inclusion in Cumulative Fix 13 for WebSphere Application Server Version 5.1.1 and fixpacks 6.0.2.15 and 6.1.0.4 for WebSphere Application Server version 6. Please refer to the Recommended Updates page for delivery information: http://www.ibm.com/support/docview.wss?rs=180&uid=swg27004980Temporary fix Comments
APAR is sysrouted FROM one or more of the following: APAR is sysrouted TO one or more of the following: PK30625 Modules/Macros
Publications Referenced
|
Product categories: Software > Application Servers >
Distributed Application & Web Servers > WebSphere Application
Server > General
Operating system(s):
Software version: 10A
Software edition:
Reference #: PK27230
IBM Group: Software Group
Modified date: Aug 23, 2006
(C) Copyright IBM Corporation 2000, 2008. All Rights Reserved.