Yup, this is part of what I've been hanging back from doing. Planning 
on closing the input channel to signal a stop event.

On Tue 05 Mar 2013 02:07:20 PM PST, Mike Trinkala wrote:
> In pipeline/outputs.go:
>
> > +func (o *FileOutput) Start(wg *sync.WaitGroup) {
> > +	o.wg = wg
> > +	wg.Add(1)
> > +	go o.receiver()
> > +	go o.committer()
> > +}
> > +
> > +func (o *FileOutput) receiver() {
> > +	var pack *PipelinePack
> > +	var err error
> > +	var ok bool
> > +	ticker := time.Tick(time.Duration(o.flushInterval) * time.Millisecond)
> > +	outBatch := make([]byte, 0, 10000)
> > +	outBytes := make([]byte, 0, 1000)
> > +
> > +	stopChan := make(chan interface{})
>
> We should probably move away from a global stop and have the ability
> to stop and restart individual components i.e. add Stop() to the
> interface.
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/mozilla-services/heka/pull/39/files#r3252192>.
>