in geronimo-transaction/src/main/java/org/apache/geronimo/transaction/manager/RecoveryImpl.java [63:92]
public synchronized void recoverLog() throws XAException {
Collection<XidBranchesPair> preparedXids;
try {
preparedXids = txManager.getTransactionLog().recover(txManager.getXidFactory());
} catch (LogException e) {
throw (XAException) new XAException(XAException.XAER_RMERR).initCause(e);
}
for (XidBranchesPair xidBranchesPair : preparedXids) {
Xid xid = xidBranchesPair.getXid();
log.log(Level.FINEST,"read prepared global xid from log: " + toString(xid));
if (txManager.getXidFactory().matchesGlobalId(xid.getGlobalTransactionId())) {
ourXids.put(new ByteArrayWrapper(xid.getGlobalTransactionId()), xidBranchesPair);
for (TransactionBranchInfo transactionBranchInfo : xidBranchesPair.getBranches()) {
log.log(Level.FINEST,"read branch from log: " + transactionBranchInfo.toString());
String name = transactionBranchInfo.getResourceName();
Set<XidBranchesPair> transactionsForName = nameToOurTxMap.get(name);
if (transactionsForName == null) {
transactionsForName = new HashSet<XidBranchesPair>();
nameToOurTxMap.put(name, transactionsForName);
}
transactionsForName.add(xidBranchesPair);
}
} else {
log.log(Level.FINEST,"read external prepared xid from log: " + toString(xid));
TransactionImpl externalTx = new ExternalTransaction(xid, txManager, xidBranchesPair.getBranches());
externalXids.put(xid, externalTx);
externalGlobalIdMap.put(xid.getGlobalTransactionId(), externalTx);
}
}
}