class SCMPipelineManager implements PipelineManager {

  protected void removePipeline(PipelineID pipelineId) throws IOException {
    lock.writeLock().lock();
    try {
      if (pipelineStore != null) {
        pipelineStore.delete(pipelineId);
        Pipeline pipeline = stateManager.removePipeline(pipelineId);
        nodeManager.removePipeline(pipeline);
        metrics.incNumPipelineDestroyed();
      }
    } catch (IOException ex) {
      metrics.incNumPipelineDestroyFailed();
      throw ex;
    } finally {
      lock.writeLock().unlock();
    }
  }

  public  SCMPipelineManager(ConfigurationSource conf,
      NodeManager nodeManager,
      Table<PipelineID, Pipeline> pipelineStore,
      EventPublisher eventPublisher);
  protected  SCMPipelineManager(ConfigurationSource conf,
      NodeManager nodeManager,
      Table<PipelineID, Pipeline> pipelineStore,
      EventPublisher eventPublisher,
      PipelineStateManager pipelineStateManager,
      PipelineFactory pipelineFactory);

}