If the CallLevel lock cannot be acquired due to timeout then the Assertion is
triggered. In this case it would be better to throw some specific exception
derived from TimeoutException, so the user code can react appropriately.
There are a couple of lines in the constructor of RootLock:
_locked = _exclusive ? _tree._selfLock.TryWrite(tree._options.LockTimeout) : _tree._selfLock.TryRead(tree._options.LockTimeout);
Assert(_locked);
Instead I suggest to do this:
_locked = _exclusive ? _tree._selfLock.TryWrite(tree._options.LockTimeout) : _tree._selfLock.TryRead(tree._options.LockTimeout);
if (!_locked)
throw new BPlusTreeTimeoutException("...");
Original issue reported on code.google.com by Frame...@gmail.com on 28 May 2014 at 12:51
Original issue reported on code.google.com by
Frame...@gmail.com
on 28 May 2014 at 12:51