public boolean releaseSharedLock() {
    // hasExclusiveLock could be true, it usually means we acquire shared lock while we or our
    // parent have held the xlock. And since there is still an exclusive lock, we do not need to
    // wake any procedures.
    return --sharedLock == 0 && !hasExclusiveLock();
  }
Returns whether we should wake the procedures waiting on the lock here.
hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/LockAndQueue.java