[Jboss-cvs] JBossAS SVN: r55959 - branches/JBoss_3_2_8_SP1_JBAS_3336/connector/src/main/org/jboss/resource/adapter/jdbc/xa

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Aug 15 11:55:55 EDT 2006


Author: weston.price at jboss.com
Date: 2006-08-15 11:55:54 -0400 (Tue, 15 Aug 2006)
New Revision: 55959

Modified:
   branches/JBoss_3_2_8_SP1_JBAS_3336/connector/src/main/org/jboss/resource/adapter/jdbc/xa/XAManagedConnection.java
Log:
[JBAS-3336] Backport of fix for destoying a managed connection in the case of an
error in start() on XA resource.

Modified: branches/JBoss_3_2_8_SP1_JBAS_3336/connector/src/main/org/jboss/resource/adapter/jdbc/xa/XAManagedConnection.java
===================================================================
--- branches/JBoss_3_2_8_SP1_JBAS_3336/connector/src/main/org/jboss/resource/adapter/jdbc/xa/XAManagedConnection.java	2006-08-15 15:32:54 UTC (rev 55958)
+++ branches/JBoss_3_2_8_SP1_JBAS_3336/connector/src/main/org/jboss/resource/adapter/jdbc/xa/XAManagedConnection.java	2006-08-15 15:55:54 UTC (rev 55959)
@@ -114,9 +114,24 @@
       {
          getLog().warn("Error setting state ", e);
       }
-      xaResource.start(xid, flags);
-      synchronized (stateLock)
+      try
       {
+         xaResource.start(xid, flags);
+         
+      }catch(XAException e)
+      {
+         //JBAS-3336 Connections that fail in enlistment should not be returned
+         //to the pool
+         if(isFailedXA(e.errorCode))
+         {
+            getLog().error("Start transaction failed for " + this);
+            broadcastConnectionError(e);  
+         }
+         
+         throw e;
+      }
+            synchronized (stateLock)
+      {
          currentXid = xid;
          inManagedTransaction = true;
       }
@@ -186,6 +201,12 @@
       return xaResource.setTransactionTimeout(seconds);
    }
 
+   private boolean isFailedXA(int errorCode)
+   {
+      
+      return (errorCode == XAException.XAER_RMERR || errorCode == XAException.XAER_RMFAIL);      
+   }
+   
    Properties getProps()
    {
       return props;




More information about the jboss-cvs-commits mailing list