ht.releaseExclusive(); } else {
/** * Acquire an upgradable lock, with infinite timeout, but don't push the lock into the * owned lock stack. Returns the lock which was acquired, or null if already owned. */ final _Lock lockUpgradableNoPush(long indexId, byte[] key) throws LockFailureException { int hash = hash(indexId, key); _LockManager.LockHT ht = mManager.getLockHT(hash); _Lock lock; LockResult result; ht.acquireExclusive(); try { lock = ht.lockAccess(indexId, key, hash); result = lock.tryLockUpgradable(ht, this, -1); } finally { ht.releaseExclusive(); } if (!result.isHeld()) { throw failed(TYPE_UPGRADABLE, result, -1); } return result == LockResult.ACQUIRED ? lock : null; }
/** * Acquire a shared lock, with infinite timeout, but don't push the lock into the owned * lock stack. Returns the lock which was acquired, or null if already owned. */ final _Lock lockSharedNoPush(long indexId, byte[] key) throws LockFailureException { int hash = hash(indexId, key); _LockManager.LockHT ht = mManager.getLockHT(hash); _Lock lock; LockResult result; ht.acquireExclusive(); try { lock = ht.lockAccess(indexId, key, hash); result = lock.tryLockShared(ht, this, -1); } finally { ht.releaseExclusive(); } if (!result.isHeld()) { throw failed(TYPE_SHARED, result, -1); } return result == LockResult.ACQUIRED ? lock : null; }
/** * Acquire an upgradable lock, with infinite timeout, but don't push the lock into the * owned lock stack. Returns the lock which was acquired, or null if already owned. */ final _Lock lockUpgradableNoPush(long indexId, byte[] key) throws LockFailureException { int hash = hash(indexId, key); _LockManager.LockHT ht = mManager.getLockHT(hash); _Lock lock; LockResult result; ht.acquireExclusive(); try { lock = ht.lockAccess(indexId, key, hash); result = lock.tryLockUpgradable(ht, this, -1); } finally { ht.releaseExclusive(); } if (!result.isHeld()) { throw failed(TYPE_UPGRADABLE, result, -1); } return result == LockResult.ACQUIRED ? lock : null; }
/** * Acquire a shared lock, with infinite timeout, but don't push the lock into the owned * lock stack. Returns the lock which was acquired, or null if already owned. */ final _Lock lockSharedNoPush(long indexId, byte[] key) throws LockFailureException { int hash = hash(indexId, key); _LockManager.LockHT ht = mManager.getLockHT(hash); _Lock lock; LockResult result; ht.acquireExclusive(); try { lock = ht.lockAccess(indexId, key, hash); result = lock.tryLockShared(ht, this, -1); } finally { ht.releaseExclusive(); } if (!result.isHeld()) { throw failed(TYPE_SHARED, result, -1); } return result == LockResult.ACQUIRED ? lock : null; }
/** * Mark a lock as referencing a ghosted entry. Caller must ensure that lock * is already exclusively held. * * @param frame must be bound to the ghost position */ final void ghosted(long indexId, byte[] key, int hash, _GhostFrame frame) { LockHT ht = getLockHT(hash); ht.acquireExclusive(); try { ht.lockFor(indexId, key, hash).setGhostFrame(frame); } finally { ht.releaseExclusive(); } }
/** * Mark a lock as referencing a ghosted entry. Caller must ensure that lock * is already exclusively held. * * @param frame must be bound to the ghost position */ final void ghosted(long indexId, byte[] key, int hash, _CursorFrame.Ghost frame) { LockHT ht = getLockHT(hash); ht.acquireExclusive(); try { ht.lockFor(indexId, key, hash).setGhostFrame(frame); } finally { ht.releaseExclusive(); } }
/** * Mark a lock as referencing a ghosted entry. Caller must ensure that lock * is already exclusively held. * * @param frame must be bound to the ghost position */ final void ghosted(long indexId, byte[] key, int hash, _CursorFrame.Ghost frame) { LockHT ht = getLockHT(hash); ht.acquireExclusive(); try { ht.lockFor(indexId, key, hash).mSharedLockOwnersObj = frame; } 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); } 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); } finally { ht.releaseExclusive(); } }
final void unlockToShared(_LockOwner locker, _Lock lock) { LockHT ht = getLockHT(lock.mHashCode); ht.acquireExclusive(); try { lock.unlockToShared(locker, ht); } finally { ht.releaseExclusive(); } }
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); } 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); } 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 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 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 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; } }