[jboss-svn-commits] JBL Code SVN: r26812 - in labs/jbosstm/trunk: ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/jca and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jun 3 12:00:22 EDT 2009


Author: jhalliday
Date: 2009-06-03 12:00:21 -0400 (Wed, 03 Jun 2009)
New Revision: 26812

Removed:
   labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/jca/CleanupSynchronization.java
Modified:
   labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/jca/TransactionImporterImple.java
   labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/jca/XATerminatorImple.java
   labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/jca/TransactionImporterImple.java
   labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/jca/XATerminatorImple.java
Log:
Revert the r26806 subordinate tx importer cleanup changes - design change means modification no longer required.  JBTM-560


Deleted: labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/jca/CleanupSynchronization.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/jca/CleanupSynchronization.java	2009-06-03 14:44:19 UTC (rev 26811)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/jca/CleanupSynchronization.java	2009-06-03 16:00:21 UTC (rev 26812)
@@ -1,63 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2006, Red Hat Middleware LLC, and individual contributors 
- * as indicated by the @author tags. 
- * See the copyright.txt in the distribution for a
- * full listing of individual contributors. 
- * This copyrighted material is made available to anyone wishing to use,
- * modify, copy, or redistribute it subject to the terms and conditions
- * of the GNU Lesser General Public License, v. 2.1.
- * This program is distributed in the hope that it will be useful, but WITHOUT A 
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
- * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
- * You should have received a copy of the GNU Lesser General Public License,
- * v.2.1 along with this distribution; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
- * MA  02110-1301, USA.
- * 
- * (C) 2005-2006,
- * @author JBoss Inc.
- */
-/*
- * Copyright (C) 2005,
- *
- * Arjuna Technologies Ltd,
- * Newcastle upon Tyne,
- * Tyne and Wear,
- * UK.
- *
- * $Id: WorkSynchronization.java 2342 2006-03-30 13:06:17Z  $
- */
-
-package com.arjuna.ats.internal.jta.transaction.arjunacore.jca;
-
-import javax.transaction.xa.Xid;
-
-public class CleanupSynchronization implements
-        javax.transaction.Synchronization
-{
-
-    public CleanupSynchronization (Xid current)
-    {
-        _xid = current;
-    }
-
-    public void beforeCompletion ()
-    {
-        // null-op.
-    }
-
-    public void afterCompletion (int status)
-    {
-        try
-        {
-            SubordinationManager.getTransactionImporter().removeImportedTransaction(_xid);
-        }
-        catch (final Exception ex)
-        {
-            ex.printStackTrace();
-        }
-    }
-
-    private Xid _xid;
-}

Modified: labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/jca/TransactionImporterImple.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/jca/TransactionImporterImple.java	2009-06-03 14:44:19 UTC (rev 26811)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/jca/TransactionImporterImple.java	2009-06-03 16:00:21 UTC (rev 26812)
@@ -34,8 +34,6 @@
 import java.util.concurrent.ConcurrentHashMap;
 
 import javax.transaction.xa.*;
-import javax.transaction.RollbackException;
-import javax.transaction.SystemException;
 import javax.transaction.Transaction;
 
 import com.arjuna.ats.arjuna.common.Uid;
@@ -98,23 +96,6 @@
 			_transactions.put(new XidImple(xid), imported);
 		}
 
-		/*
-		 * Register the cleanup synchronization immediately.
-		 */
-		
-		try
-		{
-		    imported.registerSynchronization(new CleanupSynchronization(xid));
-		}
-		catch (final SystemException ex)
-		{
-		    throw new XAException(XAException.XAER_RMERR);
-		}
-		catch (final RollbackException ex)
-		{
-		    throw new XAException(XAException.XA_RBROLLBACK);
-		}
-		
 		return imported;
 	}
 

Modified: labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/jca/XATerminatorImple.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/jca/XATerminatorImple.java	2009-06-03 14:44:19 UTC (rev 26811)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/jca/XATerminatorImple.java	2009-06-03 16:00:21 UTC (rev 26812)
@@ -84,18 +84,31 @@
                     tx.doOnePhaseCommit();
                 else
                     tx.doCommit();
+
+                SubordinationManager.getTransactionImporter()
+                        .removeImportedTransaction(xid);
             }
             else
                 throw new XAException(XAException.XA_RETRY);
         }
         catch (RollbackException e)
         {
+            SubordinationManager.getTransactionImporter()
+                    .removeImportedTransaction(xid);
             XAException xaException = new XAException(XAException.XA_RBROLLBACK);
             xaException.initCause(e);
             throw xaException;
         }
         catch (XAException ex)
         {
+            // resource hasn't had a chance to recover yet
+
+            if (ex.errorCode != XAException.XA_RETRY)
+            {
+                SubordinationManager.getTransactionImporter()
+                        .removeImportedTransaction(xid);
+            }
+
             throw ex;
         }
         catch (HeuristicRollbackException ex)
@@ -118,12 +131,18 @@
         }
         catch (final IllegalStateException ex)
         {
+            SubordinationManager.getTransactionImporter()
+                    .removeImportedTransaction(xid);
+
             XAException xaException = new XAException(XAException.XAER_NOTA);
             xaException.initCause(ex);
             throw xaException;
         }
         catch (SystemException ex)
         {
+            SubordinationManager.getTransactionImporter()
+                    .removeImportedTransaction(xid);
+
             XAException xaException = new XAException(XAException.XAER_RMERR);
             xaException.initCause(ex);
             throw xaException;
@@ -144,7 +163,8 @@
     {
         try
         {
-            SubordinateTransaction tx = SubordinationManager.getTransactionImporter().getImportedTransaction(xid);
+            SubordinateTransaction tx = SubordinationManager
+                    .getTransactionImporter().getImportedTransaction(xid);
 
             if (tx == null)
                 throw new XAException(XAException.XAER_INVAL);
@@ -157,6 +177,11 @@
             xaException.initCause(ex);
             throw xaException;
         }
+        finally
+        {
+            SubordinationManager.getTransactionImporter()
+                    .removeImportedTransaction(xid);
+        }
     }
 
     /**
@@ -185,6 +210,8 @@
             switch (tx.doPrepare())
             {
             case TwoPhaseOutcome.PREPARE_READONLY:
+                SubordinationManager.getTransactionImporter()
+                        .removeImportedTransaction(xid);
                 return XAResource.XA_RDONLY;
             case TwoPhaseOutcome.PREPARE_NOTOK:
                 // the JCA API spec limits what we can do in terms of reporting
@@ -219,6 +246,8 @@
                     xaExceptionCode = XAException.XAER_RMERR;
                 }
 
+                SubordinationManager.getTransactionImporter()
+                        .removeImportedTransaction(xid);
                 XAException xaException = new XAException(xaExceptionCode);
                 if (initCause != null)
                 {
@@ -377,12 +406,23 @@
             if (tx.activated())
             {
                 tx.doRollback();
+
+                SubordinationManager.getTransactionImporter()
+                        .removeImportedTransaction(xid);
             }
             else
                 throw new XAException(XAException.XA_RETRY);
         }
         catch (XAException ex)
         {
+            // resource hasn't had a chance to recover yet
+
+            if (ex.errorCode != XAException.XA_RETRY)
+            {
+                SubordinationManager.getTransactionImporter()
+                        .removeImportedTransaction(xid);
+            }
+
             throw ex;
         }
         catch (final HeuristicRollbackException ex)
@@ -405,12 +445,18 @@
         }
         catch (final IllegalStateException ex)
         {
+            SubordinationManager.getTransactionImporter()
+                    .removeImportedTransaction(xid);
+
             XAException xaException = new XAException(XAException.XAER_NOTA);
             xaException.initCause(ex);
             throw xaException;
         }
         catch (SystemException ex)
         {
+            SubordinationManager.getTransactionImporter()
+                    .removeImportedTransaction(xid);
+
             throw new XAException(XAException.XAER_RMERR);
         }
     }

Modified: labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/jca/TransactionImporterImple.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/jca/TransactionImporterImple.java	2009-06-03 14:44:19 UTC (rev 26811)
+++ labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/jca/TransactionImporterImple.java	2009-06-03 16:00:21 UTC (rev 26812)
@@ -34,12 +34,10 @@
 import java.util.concurrent.ConcurrentHashMap;
 
 import javax.transaction.xa.*;
-import javax.transaction.RollbackException;
-import javax.transaction.SystemException;
+import javax.transaction.Transaction;
 
 import com.arjuna.ats.arjuna.common.Uid;
 import com.arjuna.ats.internal.jta.transaction.jts.subordinate.jca.TransactionImple;
-import com.arjuna.ats.internal.jta.transaction.arjunacore.jca.CleanupSynchronization;
 import com.arjuna.ats.internal.jta.transaction.arjunacore.jca.TransactionImporter;
 import com.arjuna.ats.internal.jta.transaction.arjunacore.jca.SubordinateTransaction;
 import com.arjuna.ats.jta.xa.XidImple;
@@ -94,23 +92,6 @@
 			_transactions.put(new XidImple(xid), imported);
 		}
 		
-		/*
-                 * Register the cleanup synchronization immediately.
-                 */
-                
-                try
-                {
-                    imported.registerSynchronization(new CleanupSynchronization(xid));
-                }
-                catch (final SystemException ex)
-                {
-                    throw new XAException(XAException.XAER_RMERR);
-                }
-                catch (final RollbackException ex)
-                {
-                    throw new XAException(XAException.XA_RBROLLBACK);
-                }
-                
 		return imported;
 	}
 

Modified: labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/jca/XATerminatorImple.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/jca/XATerminatorImple.java	2009-06-03 14:44:19 UTC (rev 26811)
+++ labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/jca/XATerminatorImple.java	2009-06-03 16:00:21 UTC (rev 26812)
@@ -47,7 +47,6 @@
 import com.arjuna.ats.internal.jta.transaction.jts.subordinate.jca.coordinator.ServerTransaction;
 import com.arjuna.ats.internal.jta.transaction.arjunacore.jca.SubordinationManager;
 import com.arjuna.ats.internal.jta.transaction.arjunacore.jca.SubordinateTransaction;
-import com.arjuna.ats.internal.jta.transaction.arjunacore.jca.TxWorkManager;
 import com.arjuna.ats.jta.exceptions.UnexpectedConditionException;
 
 /**
@@ -57,7 +56,8 @@
  */
 
 public class XATerminatorImple implements javax.resource.spi.XATerminator, XATerminatorExtensions
-{   
+{
+
     public void commit (Xid xid, boolean onePhase) throws XAException
     {
         try
@@ -74,18 +74,31 @@
                     tx.doOnePhaseCommit();
                 else
                     tx.doCommit();
+
+                SubordinationManager.getTransactionImporter()
+                        .removeImportedTransaction(xid);
             }
             else
                 throw new XAException(XAException.XA_RETRY);
         }
         catch (RollbackException e)
         {
+            SubordinationManager.getTransactionImporter()
+                    .removeImportedTransaction(xid);
             XAException xaException = new XAException(XAException.XA_RBROLLBACK);
             xaException.initCause(e);
             throw xaException;
         }
         catch (XAException ex)
         {
+            // resource hasn't had a chance to recover yet
+
+            if (ex.errorCode != XAException.XA_RETRY)
+            {
+                SubordinationManager.getTransactionImporter()
+                        .removeImportedTransaction(xid);
+            }
+
             throw ex;
         }
         catch (final HeuristicCommitException ex)
@@ -108,12 +121,18 @@
         }
         catch (final IllegalStateException ex)
         {
+            SubordinationManager.getTransactionImporter()
+                    .removeImportedTransaction(xid);
+
             XAException xaException = new XAException(XAException.XAER_NOTA);
             xaException.initCause(ex);
             throw xaException;
         }
         catch (SystemException ex)
         {
+            SubordinationManager.getTransactionImporter()
+                    .removeImportedTransaction(xid);
+
             XAException xaException = new XAException(XAException.XAER_RMERR);
             xaException.initCause(ex);
             throw xaException;
@@ -138,6 +157,11 @@
             xaException.initCause(ex);
             throw xaException;
         }
+        finally
+        {
+            SubordinationManager.getTransactionImporter()
+                    .removeImportedTransaction(xid);
+        }
     }
 
     public int prepare (Xid xid) throws XAException
@@ -153,6 +177,9 @@
             switch (tx.doPrepare())
             {
             case TwoPhaseOutcome.PREPARE_READONLY:
+                SubordinationManager.getTransactionImporter()
+                        .removeImportedTransaction(xid);
+
                 return XAResource.XA_RDONLY;
             case TwoPhaseOutcome.PREPARE_NOTOK:
                 try
@@ -163,7 +190,10 @@
                 {
                     // if we failed to prepare then rollback should not fail!
                 }
-                
+
+                SubordinationManager.getTransactionImporter()
+                        .removeImportedTransaction(xid);
+
                 throw new XAException(XAException.XA_RBROLLBACK);
             case TwoPhaseOutcome.PREPARE_OK:
                 return XAResource.XA_OK;
@@ -299,12 +329,23 @@
             if (tx.baseXid() != null)
             {
                 tx.doRollback();
+
+                SubordinationManager.getTransactionImporter()
+                        .removeImportedTransaction(xid);
             }
             else
                 throw new XAException(XAException.XA_RETRY);
         }
         catch (XAException ex)
         {
+            // resource hasn't had a chance to recover yet
+
+            if (ex.errorCode != XAException.XA_RETRY)
+            {
+                SubordinationManager.getTransactionImporter()
+                        .removeImportedTransaction(xid);
+            }
+
             throw ex;
         }
         catch (HeuristicCommitException ex)
@@ -327,12 +368,18 @@
         }
         catch (final IllegalStateException ex)
         {
+            SubordinationManager.getTransactionImporter()
+                    .removeImportedTransaction(xid);
+
             XAException xaException = new XAException(XAException.XAER_NOTA);
             xaException.initCause(ex);
             throw xaException;
         }
         catch (SystemException ex)
         {
+            SubordinationManager.getTransactionImporter()
+                    .removeImportedTransaction(xid);
+
             XAException xaException = new XAException(XAException.XAER_RMERR);
             xaException.initCause(ex);
             throw xaException;




More information about the jboss-svn-commits mailing list