[jboss-svn-commits] JBL Code SVN: r18717 - labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Mar 6 06:34:32 EST 2008
Author: mark.little at jboss.com
Date: 2008-03-06 06:34:32 -0500 (Thu, 06 Mar 2008)
New Revision: 18717
Modified:
labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TransactionReaper.java
Log:
http://jira.jboss.com/jira/browse/JBTM-337
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TransactionReaper.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TransactionReaper.java 2008-03-06 11:34:00 UTC (rev 18716)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TransactionReaper.java 2008-03-06 11:34:32 UTC (rev 18717)
@@ -65,6 +65,9 @@
* @message com.arjuna.ats.arjuna.coordinator.TransactionReaper_3
* [com.arjuna.ats.arjuna.coordinator.TransactionReaper_3] -
* TransactionReaper::getTimeout for {0} returning {1}
+ * @message com.arjuna.ats.arjuna.coordinator.TransactionReaper_17
+ * [com.arjuna.ats.arjuna.coordinator.TransactionReaper_17] -
+ * TransactionReaper::getRemainingTimeout for {0} returning {1}
* @message com.arjuna.ats.arjuna.coordinator.TransactionReaper_4
* [com.arjuna.ats.arjuna.coordinator.TransactionReaper_4] -
* TransactionReaper::check interrupting cancel in progress for {0}
@@ -878,6 +881,62 @@
}
/**
+ * Given the transaction instance, this will return the time left before the
+ * transaction is automatically rolled back if it has not been terminated.
+ *
+ * @param control
+ * @return the remaining time in seconds.
+ */
+
+ public final int getRemainingTimeout (Object control)
+ {
+ if ((_transactions.size() == 0) || (control == null))
+ {
+ if (tsLogger.arjLogger.debugAllowed())
+ {
+ tsLogger.arjLogger.debug(DebugLevel.FUNCTIONS,
+ VisibilityLevel.VIS_PUBLIC,
+ FacilityCode.FAC_ATOMIC_ACTION,
+ "TransactionReaper::getRemainingTimeout for " + control
+ + " returning 0");
+ }
+
+ return 0;
+ }
+
+ final ReaperElement reaperElement = (ReaperElement)_timeouts.get(control);
+ final Integer timeout;
+
+ if (reaperElement == null)
+ {
+ timeout = new Integer(0);
+ }
+ else
+ {
+ // units are in milliseconds at this stage.
+
+ long remainingTime = reaperElement._absoluteTimeout - System.currentTimeMillis();
+ double timeInSeconds = Math.ceil(remainingTime/1000.0); // round up.
+
+ if (timeInSeconds <= 0)
+ timeInSeconds = 1;
+
+ timeout = new Integer((int) remainingTime/1000); // convert back to seconds.
+ }
+
+ tsLogger.arjLoggerI18N
+ .debug(
+ DebugLevel.FUNCTIONS,
+ VisibilityLevel.VIS_PUBLIC,
+ FacilityCode.FAC_ATOMIC_ACTION,
+ "com.arjuna.ats.arjuna.coordinator.TransactionReaper_17",
+ new Object[]
+ { control, timeout });
+
+ return timeout.intValue();
+ }
+
+ /**
* Given a Control, return the associated timeout, or 0 if we do not know
* about it.
*
More information about the jboss-svn-commits
mailing list