public void unlock(final MasterProcedureEnv env) {
    unlock.set(true);
    locked.set(false);
    // Maybe timeout already awakened the event and the procedure has finished.
    synchronized (event) {
      if (!event.isReady() && suspended) {
        setState(ProcedureProtos.ProcedureState.RUNNABLE);
        event.wake(env.getProcedureScheduler());
        suspended = false;
      }
    }
  }
Re run the procedure after every timeout to write new WAL entries so we don't hold back old
WALs.
@return false, so procedure framework doesn't mark this procedure as failure.
hbase-server/src/main/java/org/apache/hadoop/hbase/master/locking/LockProcedure.java