[jboss-svn-commits] JBL Code SVN: r36545 - in labs/jbosstm/trunk/ArjunaJTA/jta: tests/classes/com/hp/mwtests/ts/jta/recovery and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Jan 18 06:37:52 EST 2011
Author: jhalliday
Date: 2011-01-18 06:37:52 -0500 (Tue, 18 Jan 2011)
New Revision: 36545
Modified:
labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/recovery/arjunacore/RecoveryXids.java
labs/jbosstm/trunk/ArjunaJTA/jta/tests/classes/com/hp/mwtests/ts/jta/recovery/RecoveryXidsUnitTest.java
Log:
Fix Xid recovery scanning. JBTM-823
Modified: labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/recovery/arjunacore/RecoveryXids.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/recovery/arjunacore/RecoveryXids.java 2011-01-18 09:22:09 UTC (rev 36544)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/recovery/arjunacore/RecoveryXids.java 2011-01-18 11:37:52 UTC (rev 36545)
@@ -115,23 +115,33 @@
final int numScanN = (_scanN == null ? 0 : _scanN.length) ;
final int numScanM = (_scanM == null ? 0 : _scanM.length) ;
final int numScan = Math.min(numScanN, numScanM) ;
-
+
if (numScan == 0)
{
return null ;
}
-
- final Vector<Xid> workingVector = new Vector<Xid>() ;
-
- for (int count = 0 ; count < numScan ; count++)
+
+ final List<Xid> workingList = new ArrayList<Xid>(numScanN) ;
+
+ for(int i = 0; i < numScanN; i++)
{
- if (XAHelper.sameXID(_scanN[count], _scanM[count]))
+ // JBTM-823 / JBPAPP-5195 : don't assume list order/content match.
+ // the list is (hopefully) small and we don't entirely trust 3rd party
+ // Xid hashcode behaviour, so we just do this the brute force way...
+ for(int j = 0; j < numScanM; j++)
{
- workingVector.add(_scanN[count]);
+ if (XAHelper.sameXID(_scanN[i], _scanM[j]))
+ {
+ workingList.add(_scanN[i]);
+ // any given id should be in _scanN only once, but _scanM may have dupls as
+ // it's actually a combination of prev runs, per the array copy in nextScan.
+ // we drop out here as we want each Xid only once in the return set:
+ break;
+ }
}
}
-
- return workingVector.toArray(new Xid[workingVector.size()]);
+
+ return workingList.toArray(new Xid[workingList.size()]);
}
public final boolean isSameRM (XAResource xares)
Modified: labs/jbosstm/trunk/ArjunaJTA/jta/tests/classes/com/hp/mwtests/ts/jta/recovery/RecoveryXidsUnitTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jta/tests/classes/com/hp/mwtests/ts/jta/recovery/RecoveryXidsUnitTest.java 2011-01-18 09:22:09 UTC (rev 36544)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/tests/classes/com/hp/mwtests/ts/jta/recovery/RecoveryXidsUnitTest.java 2011-01-18 11:37:52 UTC (rev 36545)
@@ -70,7 +70,7 @@
Object[] trans = rxids.toRecover();
- assertEquals(trans.length, 2);
+ assertEquals(2, trans.length);
assertEquals(trans[0], xids[0]);
assertTrue(rxids.contains(xids[0]));
More information about the jboss-svn-commits
mailing list