private Flow executeFromDropOnDataNodes(ConfigNodeProcedureEnv env) {
    LOGGER.info("DropPipePluginProcedure: executeFromDropOnDataNodes({})", pluginName);

    if (RpcUtils.squashResponseStatusList(env.dropPipePluginOnDataNodes(pluginName, true)).getCode()
        == TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
      setNextState(DropPipePluginState.DROP_ON_CONFIG_NODES);
      return Flow.HAS_MORE_STATE;
    }

    throw new PipeException(
        String.format("Failed to drop pipe plugin %s on data nodes", pluginName));
  }
This class extends {@link AbstractNodeProcedure} to make sure that when a {@link
DropPipePluginProcedure} is executed, the {@link AddConfigNodeProcedure}, {@link
RemoveConfigNodeProcedure} or {@link RemoveDataNodesProcedure} will not be executed at the same
time.
iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/plugin/DropPipePluginProcedure.java