container/src/main/java/com/streamsets/datacollector/execution/runner/common/ProductionPipelineRunnable.java
public void forceQuit() {
    synchronized (relatedTasks){
      if (runningThread != null) {
        runningThread.interrupt();
        runningThread = null;
        cancelTask();
        postStop();
      }
    }
    countDownLatch.countDown();
  }
public void forceQuit() {
    synchronized (relatedTasks){
      if (runningThread != null) {
        runningThread.interrupt();
        runningThread = null;
        cancelTask();
        postStop();
      }
    }
    countDownLatch.countDown();
  }
public void forceQuit ( ) { synchronized ( relatedTasks ) { if ( runningThread != null ) { runningThread . interrupt ( ) ; runningThread = null ; cancelTask ( ) ; postStop ( ) ; } } countDownLatch . countDown ( ) ; }
This function is called while thread is waiting at countDownLatch.await in stop().
It cancels tasks, change pipeline state and call countDown(), so that the waiting thread
can proceed to terminate.
This function is called while thread is waiting at countDownLatch . await in stop () . It cancels tasks change pipeline state and call countDown () so that the waiting thread can proceed to terminate .