public void ReleaseTableReadLock(ITable table, Transaction transaction) { if (transaction.IsolationLevel == IsolationLevels.RepetableRead) { return; } ILock tableLock = this.tableLocks[table]; var lockInfo = this.lockInventory.GetLockInformation(tableLock, transaction); // Releated tables are locked until the transaction ends if (!lockInfo.IsRelatedTable && lockInfo.IsReadLockHeld) { if (!lockInfo.IsWriteLockHeld) { tableLock.ExitRead(); // TODO: OnReleased } lockInfo.IsReadLockHeld = false; } }