public virtual void Close(ShutdownMode mode) { lock (_mainContainer.Lock()) { IEnumerator entryIter = _fileName2Container.Iterator(); while (entryIter.MoveNext()) { IEntry4 hashEntry = (IEntry4)entryIter.Current; ClientTransactionPool.ContainerCount containerCount = (ClientTransactionPool.ContainerCount )hashEntry.Value(); try { containerCount.Close(mode); } catch (Exception t) { // If we are in fatal ShutdownMode close will // throw but we want to continue shutting down // all entries. Sharpen.Runtime.PrintStackTrace(t); } } _closed = true; } }
public virtual void Release(ShutdownMode mode, Transaction transaction, bool rollbackOnClose ) { lock (_mainContainer.Lock()) { ClientTransactionPool.ContainerCount entry = (ClientTransactionPool.ContainerCount )_transaction2Container.Get(transaction); entry.Container().CloseTransaction(transaction, false, mode.IsFatal() ? false : rollbackOnClose ); _transaction2Container.Remove(transaction); entry.Release(); if (entry.IsEmpty()) { _fileName2Container.Remove(entry.FileName()); try { entry.Close(mode); } catch (Exception t) { // If we are in fatal ShutdownMode close will // throw but we want to continue shutting down // all entries. Sharpen.Runtime.PrintStackTrace(t); } } } }