User: d_jencks
Date: 02/03/24 13:44:32
Modified: src/main/org/jboss/tm TxCapsule.java
Log:
New ConnectionManager implementation
Revision Changes Path
1.34 +71 -28 jboss/src/main/org/jboss/tm/TxCapsule.java
Index: TxCapsule.java
===================================================================
RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/tm/TxCapsule.java,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -r1.33 -r1.34
--- TxCapsule.java 16 Feb 2002 22:38:51 -0000 1.33
+++ TxCapsule.java 24 Mar 2002 21:44:32 -0000 1.34
@@ -49,7 +49,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Ole Husgaard</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Toby Allsopp</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Jason Dillon</a>
- * @version $Revision: 1.33 $
+ * @version $Revision: 1.34 $
*/
class TxCapsule
implements TimeoutTarget
@@ -68,7 +68,7 @@
private Logger log = Logger.getLogger(this.getClass());
/** True if trace messages should be logged. */
- private boolean trace = log.isDebugEnabled();
+ private boolean trace = log.isTraceEnabled();
// Static --------------------------------------------------------
@@ -177,7 +177,10 @@
start = System.currentTimeMillis();
this.timeout = TimeoutFactory.createTimeout(start+timeout, this);
-
+
+ //check to see if log settings have changed
+ trace = log.isTraceEnabled();
+
if (trace)
{
log.trace("Reused instance for tx=" + toString());
@@ -342,7 +345,9 @@
log.trace("Zero phase commit: No resources.");
}
status = Status.STATUS_COMMITTED;
- } else if (resourceCount == 1)
+ //} else if (resourceCount == 1)
+ }
+ else if (isOneResource())
{
// One phase commit
if (trace)
@@ -823,6 +828,8 @@
/**
* Count of resources that have participated in this transaction.
+ * This contains a count of all XAResources, not a count of distinct resource
managers.
+ * It is the length of resources and other such arrays.
*/
private int resourceCount = 0;
@@ -1170,7 +1177,7 @@
{
if (trace)
{
- log.trace("unhandled throwable", t);
+ log.trace("unhandled throwable error in startResource", t);
}
status = Status.STATUS_MARKED_ROLLBACK;
return;
@@ -1224,7 +1231,7 @@
{
if (trace)
{
- log.trace("unhandled throwable", t);
+ log.trace("unhandled throwable error in endResource", t);
}
status = Status.STATUS_MARKED_ROLLBACK;
// Resource may or may not be ended after illegal exception.
@@ -1240,7 +1247,10 @@
else
{
if (flag == XAResource.TMFAIL)
+ {
+
status = Status.STATUS_MARKED_ROLLBACK;
+ }
resourceState[idx] = RS_ENDED;
}
} finally
@@ -1314,6 +1324,10 @@
{
try
{
+ if (trace)
+ {
+ log.trace("calling sync " + i + ", " + sync[i]);
+ } // end of if ()
sync[i].beforeCompletion();
} catch (Throwable t)
{
@@ -1478,31 +1492,35 @@
// Set done flag so we get no more frontends waiting for
// the lock.
done = true;
+ // Clear content of collections.
+ for (int i = 0; i < syncCount; ++i)
+ {
+ sync[i] = null; // release for GC
+ }
+ syncCount = 0;
+
+ //for (int i = 0; i < transactionCount; ++i)
+ // transactions[i] = null; // release for GC
+ //transactionCount = 0;
+ transaction = null; // release for GC
+
+ for (int i = 0; i < resourceCount; ++i)
+ {
+ resources[i] = null; // release for GC
+ resourceXids[i] = null; // release for GC
+ }
+ resourceCount = 0;
+ // If using a special class, second constructor argument is now useless.
+ if (xidConstructor != null)
+ {
+ xidConstructorArgs[1] = null; // This now needs initializing
+ }
// Wake up anybody waiting for the lock.
notifyAll();
}
- // Clear content of collections.
- for (int i = 0; i < syncCount; ++i)
- sync[i] = null; // release for GC
- syncCount = 0;
- //for (int i = 0; i < transactionCount; ++i)
- // transactions[i] = null; // release for GC
- //transactionCount = 0;
- transaction = null; // release for GC
-
- for (int i = 0; i < resourceCount; ++i)
- {
- resources[i] = null; // release for GC
- resourceXids[i] = null; // release for GC
- }
- resourceCount = 0;
-
- // If using a special class, second constructor argument is now useless.
- if (xidConstructor != null)
- xidConstructorArgs[1] = null; // This now needs initializing
}
/**
@@ -1555,6 +1573,10 @@
else
{
// Illegal vote: rollback.
+ if (trace)
+ {
+ log.trace("illegal vote in prepare resources", new Exception());
+ } // end of if ()
status = Status.STATUS_MARKED_ROLLBACK;
return false;
}
@@ -1587,7 +1609,7 @@
{
if (trace)
{
- log.trace("unhandled throwable", t);
+ log.trace("unhandled throwable in prepareResources", t);
}
if (status == Status.STATUS_PREPARING)
status = Status.STATUS_MARKED_ROLLBACK;
@@ -1664,7 +1686,7 @@
{
if (trace)
{
- log.trace("unhandled throwable", t);
+ log.trace("unhandled throwable in commitResources", t);
}
}
}
@@ -1727,7 +1749,7 @@
{
if (trace)
{
- log.trace("unhandled throwable", t);
+ log.trace("unhandled throwable in rollbackResources", t);
}
}
}
@@ -1772,6 +1794,27 @@
}
}
}
+
+ private boolean isOneResource()
+ {
+ if (resourceCount == 1)
+ {
+ return true;
+ } // end of if ()
+ //first XAResource surely has -1, it's the first!
+ for (int i = 1; i < resourceCount; i++)
+ {
+ if (resourceSameRM[i] == -1)
+ {
+ //this one is not the same rm as previous ones, there must be at least 2
+ return false;
+ } // end of if ()
+
+ } // end of for ()
+ //all rms are the same one, one phase commit is ok.
+ return true;
+ }
// Inner classes -------------------------------------------------
}
+
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development