void MakeWrittable() { if (_writting) { return; } if (_preapprovedWritting) { _writting = true; _preapprovedWritting = false; _keyValueDB.WriteStartTransaction(); return; } if (_readOnly) { throw new BTDBTransactionRetryException("Cannot write from readOnly transaction"); } var oldBTreeRoot = BtreeRoot; _btreeRoot = _keyValueDB.MakeWrittableTransaction(this, oldBTreeRoot); _keyValueDB.StartedUsingBTreeRoot(_btreeRoot); _keyValueDB.FinishedUsingBTreeRoot(oldBTreeRoot); _btreeRoot.DescriptionForLeaks = _descriptionForLeaks; _writting = true; InvalidateCurrentKey(); _keyValueDB.WriteStartTransaction(); }