@Override
  protected LockState acquireLock(final MasterProcedureEnv env) {
    if (env.getProcedureScheduler().waitRegions(this, getTableName(), region)) {
      return LockState.LOCK_EVENT_WAIT;
    }
    return LockState.LOCK_ACQUIRED;
  }
A remote procedure which is used to send region snapshot request to region server. The basic
logic of SnapshotRegionProcedure is similar like {@link ServerRemoteProcedure}, only with a
little difference, when {@link FailedRemoteDispatchException} was thrown, SnapshotRegionProcedure
will sleep some time and continue retrying until success.
hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/SnapshotRegionProcedure.java