void NewWrittingTransactionUnsafe(TaskCompletionSource <IKeyValueDBTransaction> tcs) { var newTransactionRoot = LastCommited.NewTransactionRoot(); _writingTransaction = new InMemoryKeyValueDBTransaction(this, newTransactionRoot, true, false); tcs.TrySetResult(_writingTransaction); }
public IKeyValueDBTransaction StartReadOnlyTransaction() { var tr = new InMemoryKeyValueDBTransaction(this, LastCommited, false, true); _transactions.Add(tr, null); return(tr); }
internal void RevertWrittingTransaction() { lock (_writeLock) { _writingTransaction = null; TryDequeWaiterForWrittingTransaction(); } }
InMemoryKeyValueDBTransaction NewWritingTransactionUnsafe() { var newTransactionRoot = LastCommited.NewTransactionRoot(); var tr = new InMemoryKeyValueDBTransaction(this, newTransactionRoot, true, false); _writingTransaction = tr; return(tr); }
internal void CommitWrittingTransaction(IBTreeRootNode btreeRoot) { lock (_writeLock) { _writingTransaction = null; _lastCommited = btreeRoot; TryDequeWaiterForWrittingTransaction(); } }
internal void CommitWrittingTransaction(IBTreeRootNode btreeRoot) { lock (_writeLock) { _writingTransaction = null; _lastCommited = btreeRoot; TryDequeWaiterForWrittingTransaction(); } }
internal IBTreeRootNode MakeWrittableTransaction(InMemoryKeyValueDBTransaction keyValueDBTransaction, IBTreeRootNode btreeRoot) { lock (_writeLock) { if (_writingTransaction != null) throw new BTDBTransactionRetryException("Another writting transaction already running"); if (LastCommited != btreeRoot) throw new BTDBTransactionRetryException("Another writting transaction already finished"); _writingTransaction = keyValueDBTransaction; return btreeRoot.NewTransactionRoot(); } }
internal IBTreeRootNode MakeWrittableTransaction(InMemoryKeyValueDBTransaction keyValueDBTransaction, IBTreeRootNode btreeRoot) { lock (_writeLock) { if (_writingTransaction != null) { throw new BTDBTransactionRetryException("Another writting transaction already running"); } if (LastCommited != btreeRoot) { throw new BTDBTransactionRetryException("Another writting transaction already finished"); } _writingTransaction = keyValueDBTransaction; return(btreeRoot.NewTransactionRoot()); } }
void NewWrittingTransactionUnsafe(TaskCompletionSource<IKeyValueDBTransaction> tcs) { var newTransactionRoot = LastCommited.NewTransactionRoot(); _writingTransaction = new InMemoryKeyValueDBTransaction(this, newTransactionRoot, true, false); tcs.TrySetResult(_writingTransaction); }
internal void RevertWrittingTransaction() { lock (_writeLock) { _writingTransaction = null; TryDequeWaiterForWrittingTransaction(); } }