func (r *Runner) Stop() {
	r.stopLock.Lock()
	defer r.stopLock.Unlock()

	if r.stopped {
		return
	}

	log.Printf("[INFO] (runner) stopping")
	r.stopDedup()
	r.stopWatcher()
	r.stopChild()

	if err := r.deletePid(); err != nil {
		log.Printf("[WARN] (runner) could not remove pid at %v: %s",
			r.config.PidFile, err)
	}

	r.stopped = true

	close(r.DoneCh)
}
func (r *Runner) Stop() {
	r.stopLock.Lock()
	defer r.stopLock.Unlock()

	if r.stopped {
		return
	}

	log.Printf("[INFO] (runner) stopping")
	r.stopDedup()
	r.stopWatcher()
	r.stopChild()

	if err := r.deletePid(); err != nil {
		log.Printf("[WARN] (runner) could not remove pid at %v: %s",
			r.config.PidFile, err)
	}

	r.stopped = true

	close(r.DoneCh)
}
func ( r * Runner ) Stop ( ) { r . stopLock . Lock ( ) defer r . stopLock . Unlock ( ) if r . stopped { return } log . Printf ( " " ) r . stopDedup ( ) r . stopWatcher ( ) r . stopChild ( ) if err := r . deletePid ( ) ; err != nil { log . Printf ( " " , r . config . PidFile , err ) } r . stopped = true close ( r . DoneCh ) }
// Stop halts the execution of this runner and its subprocesses.
Stop halts the execution of this runner and its subprocesses .