public TSStatus dropPipePlugin(final DropPipePluginPlan dropPipePluginPlan) {
    final String pluginName = dropPipePluginPlan.getPluginName();

    if (pipePluginMetaKeeper.containsPipePlugin(pluginName)) {
      String jarName = pipePluginMetaKeeper.getPipePluginMeta(pluginName).getJarName();
      pipePluginMetaKeeper.removeJarNameAndMd5IfPossible(jarName);
      pipePluginMetaKeeper.removePipePluginMeta(pluginName);
      pipePluginMetaKeeper.removePipePluginVisibility(pluginName);

      try {
        pipePluginExecutableManager.removePluginFileUnderLibRoot(pluginName, jarName);
        classLoaderManager.removePluginClassLoader(pluginName);
      } catch (IOException e) {
        final String errorMessage =
            String.format(
                "Failed to execute dropPipePlugin(%s) on config nodes, because of %s",
                pluginName, e);
        LOGGER.warn(errorMessage, e);
        return new TSStatus(TSStatusCode.EXECUTE_STATEMENT_ERROR.getStatusCode())
            .setMessage(errorMessage);
      }
    }

    return new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
  }
@return true if the pipe plugin is not created and the isSetIfExistsCondition is true, false
    otherwise
@throws PipeException if the pipe plugin is not created and the isSetIfExistsCondition is false
iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/pipe/PipePluginInfo.java