final void unlockToUpgradable(LockOwner locker, Lock lock) { LockHT ht = getLockHT(lock.mHashCode); ht.acquireExclusive(); try { lock.unlockToUpgradable(locker, ht); } catch (Throwable e) { ht.releaseExclusive(); throw e; } }
final PendingTxn transferExclusive(LockOwner locker, Lock lock, PendingTxn pending) { LockHT ht = getLockHT(lock.mHashCode); ht.acquireExclusive(); try { return lock.transferExclusive(locker, ht, pending); } catch (Throwable e) { ht.releaseExclusive(); throw e; } }
final void unlockToShared(LockOwner locker, Lock lock) { LockHT ht = getLockHT(lock.mHashCode); ht.acquireExclusive(); try { lock.unlockToShared(locker, ht); } catch (Throwable e) { ht.releaseExclusive(); throw e; } }
final void unlock(LockOwner locker, Lock lock) { LockHT ht = getLockHT(lock.mHashCode); ht.acquireExclusive(); try { lock.unlock(locker, ht); } catch (Throwable e) { ht.releaseExclusive(); throw e; } }
final void unlockToUpgradable(LockOwner locker, Lock lock) { LockHT ht = getLockHT(lock.mHashCode); ht.acquireExclusive(); try { lock.unlockToUpgradable(locker, ht); } catch (Throwable e) { ht.releaseExclusive(); throw e; } }
final PendingTxn transferExclusive(LockOwner locker, Lock lock, PendingTxn pending) { LockHT ht = getLockHT(lock.mHashCode); ht.acquireExclusive(); try { return lock.transferExclusive(locker, ht, pending); } catch (Throwable e) { ht.releaseExclusive(); throw e; } }
final void unlock(LockOwner locker, Lock lock) { LockHT ht = getLockHT(lock.mHashCode); ht.acquireExclusive(); try { lock.unlock(locker, ht); } catch (Throwable e) { ht.releaseExclusive(); throw e; } }
final void unlockToShared(LockOwner locker, Lock lock) { LockHT ht = getLockHT(lock.mHashCode); ht.acquireExclusive(); try { lock.unlockToShared(locker, ht); } finally { ht.releaseExclusive(); } }
final PendingTxn transferExclusive(LockOwner locker, Lock lock, PendingTxn pending) { LockHT ht = getLockHT(lock.mHashCode); ht.acquireExclusive(); try { return lock.transferExclusive(locker, ht, pending); } finally { ht.releaseExclusive(); } }
final void unlockToUpgradable(LockOwner locker, Lock lock) { LockHT ht = getLockHT(lock.mHashCode); ht.acquireExclusive(); try { lock.unlockToUpgradable(locker, ht); } finally { ht.releaseExclusive(); } }
final LockResult check(LockOwner locker, long indexId, byte[] key, int hash) { LockHT ht = getLockHT(hash); ht.acquireShared(); try { Lock lock = ht.lockFor(indexId, key, hash); return lock == null ? LockResult.UNOWNED : lock.check(locker); } finally { ht.releaseShared(); } }
final Locker lockSharedLocal(long indexId, byte[] key, int hash) throws LockFailureException { Locker locker = localLocker(); LockResult result = getLockHT(hash) .tryLock(TYPE_SHARED, locker, indexId, key, hash, mDefaultTimeoutNanos); if (result.isHeld()) { return locker; } throw locker.failed(TYPE_SHARED, result, mDefaultTimeoutNanos); }
final LockResult check(LockOwner locker, long indexId, byte[] key, int hash) { LockHT ht = getLockHT(hash); ht.acquireShared(); try { Lock lock = ht.lockFor(indexId, key, hash); return lock == null ? LockResult.UNOWNED : lock.check(locker); } finally { ht.releaseShared(); } }
final Locker lockSharedLocal(long indexId, byte[] key, int hash) throws LockFailureException { Locker locker = localLocker(); LockResult result = getLockHT(hash) .tryLock(TYPE_SHARED, locker, indexId, key, hash, mDefaultTimeoutNanos); if (result.isHeld()) { return locker; } throw locker.failed(TYPE_SHARED, result, mDefaultTimeoutNanos); }
final Locker lockExclusiveLocal(long indexId, byte[] key, int hash) throws LockFailureException { Locker locker = localLocker(); LockResult result = getLockHT(hash) .tryLock(TYPE_EXCLUSIVE, locker, indexId, key, hash, mDefaultTimeoutNanos); if (result.isHeld()) { return locker; } throw locker.failed(TYPE_EXCLUSIVE, result, mDefaultTimeoutNanos, hash); }
final Locker lockExclusiveLocal(long indexId, byte[] key, int hash) throws LockFailureException { Locker locker = localLocker(); LockResult result = getLockHT(hash) .tryLock(TYPE_EXCLUSIVE, locker, indexId, key, hash, mDefaultTimeoutNanos); if (result.isHeld()) { return locker; } throw locker.failed(TYPE_EXCLUSIVE, result, mDefaultTimeoutNanos); }
final Locker lockExclusiveLocal(long indexId, byte[] key, int hash) throws LockFailureException { Locker locker = localLocker(); LockResult result = getLockHT(hash) .tryLock(TYPE_EXCLUSIVE, locker, indexId, key, hash, mDefaultTimeoutNanos); if (result.isHeld()) { return locker; } throw locker.failed(TYPE_EXCLUSIVE, result, mDefaultTimeoutNanos); }
final LockResult check(LockOwner locker, long indexId, byte[] key, int hash) { LockHT ht = getLockHT(hash); ht.acquireShared(); try { Lock lock = ht.lockFor(indexId, key, hash); return lock == null ? LockResult.UNOWNED : lock.check(locker); } finally { ht.releaseShared(); } }
final void unlock(LockOwner locker, Lock lock) { LockHT ht = getLockHT(lock.mHashCode); ht.acquireExclusive(); try { if (lock.unlock(locker, ht)) { ht.remove(lock); } } finally { ht.releaseExclusive(); } }
final Locker lockSharedLocal(long indexId, byte[] key, int hash) throws LockFailureException { Locker locker = localLocker(); LockResult result = getLockHT(hash) .tryLock(TYPE_SHARED, locker, indexId, key, hash, mDefaultTimeoutNanos); if (result.isHeld()) { return locker; } throw locker.failed(TYPE_SHARED, result, mDefaultTimeoutNanos, hash); }