protected AtomicReference<PipeTaskInfo> acquireLockInternal(
      ConfigNodeProcedureEnv configNodeProcedureEnv) {
    return configNodeProcedureEnv
        .getConfigManager()
        .getPipeManager()
        .getPipeTaskCoordinator()
        .lock();
  }
This procedure manages 2 kinds of PIPE operations:

<ul>
  <li>PIPE user task operations:
      <ul>
        <li>{@link PipeTaskOperation#CREATE_PIPE}
        <li>{@link PipeTaskOperation#START_PIPE}
        <li>{@link PipeTaskOperation#STOP_PIPE}
        <li>{@link PipeTaskOperation#DROP_PIPE}
        <li>{@link PipeTaskOperation#ALTER_PIPE}
      </ul>
  <li>PIPE runtime task operations:
      <ul>
        <li>{@link PipeTaskOperation#HANDLE_LEADER_CHANGE}
        <li>{@link PipeTaskOperation#SYNC_PIPE_META}
        <li>{@link PipeTaskOperation#HANDLE_PIPE_META_CHANGE}
      </ul>
</ul>

<p>This class extends {@link AbstractNodeProcedure} to make sure that pipe task procedures can be
executed in sequence and node procedures can be locked when a pipe task procedure is running.
iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/AbstractOperatePipeProcedureV2.java