From 5043c6fce7cfe76590c10452ff88094d61d21fd5 Mon Sep 17 00:00:00 2001 From: Johannes 'fish' Ziemke Date: Thu, 25 Apr 2013 12:12:50 +0200 Subject: [PATCH] Have goroutine exit on signal via defer block. --- storage/metric/tiered.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/storage/metric/tiered.go b/storage/metric/tiered.go index c4364f7311..d68835b6c8 100644 --- a/storage/metric/tiered.go +++ b/storage/metric/tiered.go @@ -164,15 +164,20 @@ func (t *tieredStorage) Serve() { var ( flushMemoryTicker = time.Tick(t.flushMemoryInterval) writeMemoryTicker = time.Tick(t.writeMemoryInterval) + stopReport = make(chan bool) ) + defer func() { close(stopReport) }() go func() { reportTicker := time.Tick(time.Second) for { - <-reportTicker - - t.reportQueues() + select { + case <-reportTicker: + t.reportQueues() + case <-stopReport: + return + } } }()