/** {@inheritDoc} */ @Override protected final boolean tryRelease(int releases) { // This method is called with release==0 only when trying to wake through update, // to check if some other node released the lock. if (releases == 0) return true; // If broken in non-failoversafe mode, exit immediately. if (interruptAll) return true; int c = getState() - releases; if (!isHeldExclusively()) { log.error("Lock.unlock() is called in illegal state [callerNodeId=" + thisNode + ", ownerNodeId=" + currentOwnerNode + ", callerThreadId=" + Thread.currentThread().getId() + ", ownerThreadId=" + currentOwnerThreadId + ", lockState=" + getState() + "]"); throw new IllegalMonitorStateException(); } boolean free = false; if (c == 0) { free = true; setGlobalState(0, processAwait(), processSignal()); while (isHeldExclusively() && !interruptAll) Thread.yield(); } else setState(c); return free; }
/** {@inheritDoc} */ @Override protected final boolean tryRelease(int releases) { // This method is called with release==0 only when trying to wake through update, // to check if some other node released the lock. if (releases == 0) return true; // If broken in non-failoversafe mode, exit immediately. if (interruptAll) return true; int c = getState() - releases; if (!isHeldExclusively()) { log.error("Lock.unlock() is called in illegal state [callerNodeId=" + thisNode + ", ownerNodeId=" + currentOwnerNode + ", callerThreadId=" + Thread.currentThread().getId() + ", ownerThreadId=" + currentOwnerThreadId + ", lockState=" + getState() + "]"); throw new IllegalMonitorStateException(); } boolean free = false; if (c == 0) { free = true; setGlobalState(0, processAwait(), processSignal()); while (isHeldExclusively() && !interruptAll) Thread.yield(); } else setState(c); return free; }
final int getHoldCount() { return isHeldExclusively() ? getState() : 0; }
final boolean isLocked() throws IgniteCheckedException { return getState() != 0 || cacheView.get(key).get() != 0; }
/** * Gets the number of permissions currently acquired at this lock. * * @return Number of permits acquired at this reentrant lock. */ final int getPermits() { return getState(); }
final int getHoldCount() { return isHeldExclusively() ? getState() : 0; }
final boolean isLocked() throws IgniteCheckedException { return getState() != 0 || cacheView.get(key).get() != 0; }
/** * Gets the number of permissions currently acquired at this lock. * * @return Number of permits acquired at this reentrant lock. */ final int getPermits() { return getState(); }