[jboss-svn-commits] JBL Code SVN: r25363 - labs/jbosstm/trunk/XTS/WS-T/dev/src11/com/arjuna/wst11/messaging/engines.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Feb 20 09:55:03 EST 2009
Author: adinn
Date: 2009-02-20 09:55:02 -0500 (Fri, 20 Feb 2009)
New Revision: 25363
Modified:
labs/jbosstm/trunk/XTS/WS-T/dev/src11/com/arjuna/wst11/messaging/engines/ParticipantEngine.java
Log:
patched error in participant soap fault handling where it was failing to rollback a prepared participant when notified that it was unknown to the coordinator
Modified: labs/jbosstm/trunk/XTS/WS-T/dev/src11/com/arjuna/wst11/messaging/engines/ParticipantEngine.java
===================================================================
--- labs/jbosstm/trunk/XTS/WS-T/dev/src11/com/arjuna/wst11/messaging/engines/ParticipantEngine.java 2009-02-20 14:42:00 UTC (rev 25362)
+++ labs/jbosstm/trunk/XTS/WS-T/dev/src11/com/arjuna/wst11/messaging/engines/ParticipantEngine.java 2009-02-20 14:55:02 UTC (rev 25363)
@@ -330,6 +330,7 @@
* @message com.arjuna.wst11.messaging.engines.ParticipantEngine.soapFault_1 [com.arjuna.wst11.messaging.engines.ParticipantEngine.soapFault_1] - Unexpected SOAP fault for participant {0}: {1} {2}
* @message com.arjuna.wst11.messaging.engines.ParticipantEngine.soapFault_2 [com.arjuna.wst11.messaging.engines.ParticipantEngine.soapFault_2] - Unrecoverable error for participant {0} : {1} {2}
* @message com.arjuna.wst11.messaging.engines.ParticipantEngine.soapFault_3 [com.arjuna.wst11.messaging.engines.ParticipantEngine.soapFault_3] - Unable to delete recovery record at commit for participant {0}
+ * @message com.arjuna.wst11.messaging.engines.ParticipantEngine.soapFault_4 [com.arjuna.wst11.messaging.engines.ParticipantEngine.soapFault_4] - Unexpected error rolling back participant {0}
*/
public void soapFault(final SoapFault soapFault, final AddressingProperties addressingProperties, final ArjunaContext arjunaContext)
{
@@ -341,9 +342,11 @@
WSTLogger.arjLoggerI18N.debug("com.arjuna.wst11.messaging.engines.ParticipantEngine.soapFault_1", new Object[] {instanceIdentifier, soapFaultType, subCode}) ;
}
- if (CoordinationConstants.WSCOOR_ERROR_CODE_INVALID_STATE_QNAME.equals(soapFault.getSubcode()) ||
- AtomicTransactionConstants.WSAT_ERROR_CODE_INCONSISTENT_INTERNAL_STATE_QNAME.equals(soapFault.getSubcode()) ||
- AtomicTransactionConstants.WSAT_ERROR_CODE_UNKNOWN_TRANSACTION_QNAME.equals(soapFault.getSubcode()))
+ QName subcode = soapFault.getSubcode();
+
+ if (CoordinationConstants.WSCOOR_ERROR_CODE_INVALID_STATE_QNAME.equals(subcode) ||
+ AtomicTransactionConstants.WSAT_ERROR_CODE_INCONSISTENT_INTERNAL_STATE_QNAME.equals(subcode) ||
+ AtomicTransactionConstants.WSAT_ERROR_CODE_UNKNOWN_TRANSACTION_QNAME.equals(subcode))
{
if (WSTLogger.arjLoggerI18N.isErrorEnabled())
{
@@ -362,6 +365,19 @@
state = null;
}
+ if (current == State.STATE_PREPARED_SUCCESS &&
+ AtomicTransactionConstants.WSAT_ERROR_CODE_UNKNOWN_TRANSACTION_QNAME.equals(subcode)) {
+ // we need to tell this participant to roll back
+ try {
+ participant.rollback();
+ } catch (Exception e) {
+ if (WSTLogger.arjLoggerI18N.isErrorEnabled())
+ {
+ WSTLogger.arjLoggerI18N.error("com.arjuna.wst11.messaging.engines.ParticipantEngine.soapFault_3", new Object[] {id}) ;
+ }
+ }
+ }
+
if (persisted && participant instanceof Durable2PCParticipant) {
// remove any durable participant recovery record from the persistent store
Durable2PCParticipant durableParticipant =(Durable2PCParticipant) participant;
More information about the jboss-svn-commits
mailing list