public boolean waitGlobalExclusiveLock(Procedure<?> procedure, String globalId) {
    schedLock();
    try {
      final LockAndQueue lock = locking.getGlobalLock(globalId);
      if (lock.tryExclusiveLock(procedure)) {
        removeFromRunQueue(globalRunQueue, getGlobalQueue(globalId),
          () -> procedure + " held shared lock");
        return false;
      }
      waitProcedure(lock, procedure);
      logLockedResource(LockedResourceType.GLOBAL, HConstants.EMPTY_STRING);
      return true;
    } finally {
      schedUnlock();
    }
  }
Try to acquire the share lock on global.
@see #wakeGlobalExclusiveLock(Procedure, String)
@param procedure the procedure trying to acquire the lock
@return true if the procedure has to wait for global to be available
hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.java