예제 #1
0
        internal void TransactionAfterCommit(LowLevelTransaction tx)
        {
            if (ActiveTransactions.Contains(tx) == false)
            {
                return;
            }

            using (PreventNewReadTransactions())
            {
                ScratchBufferPool.UpdateCacheForPagerStatesOfAllScratches();
                Journal.UpdateCacheForJournalSnapshots();

                tx.OnAfterCommitWhenNewReadTransactionsPrevented();

                if (tx.Committed && tx.FlushedToJournal)
                {
                    _transactionsCounter = tx.Id;
                }

                State = tx.State;
            }
        }
예제 #2
0
        internal void TransactionAfterCommit(LowLevelTransaction tx)
        {
            if (ActiveTransactions.Contains(tx) == false)
            {
                return;
            }

            using (PreventNewReadTransactions())
            {
                Journal.Applicator.OnTransactionCommitted(tx);
                ScratchBufferPool.UpdateCacheForPagerStatesOfAllScratches();
                Journal.UpdateCacheForJournalSnapshots();

                tx.OnAfterCommitWhenNewReadTransactionsPrevented();

                if (tx.Committed && tx.FlushedToJournal)
                {
                    Interlocked.Exchange(ref _transactionsCounter, tx.Id);
                }

                State = tx.State;
            }
        }