internal void CloseTransaction(ITransaction transaction)
{
bool lastTransaction;
// Closing must happen under a commit Lock.
lock (commitLock) {
Database.TransactionFactory.OpenTransactions.RemoveTransaction(transaction);
// Increment the commit id.
++CurrentCommitId;
// Was that the last transaction?
lastTransaction = Database.TransactionFactory.OpenTransactions.Count == 0;
}
// If last transaction then schedule a clean up event.
if (lastTransaction) {
try {
CleanUp();
} catch (IOException) {
// TODO: Register the error ...
}
}
}