From 92156ee89dd9d43352170bb8ffdabd75523e0c08 Mon Sep 17 00:00:00 2001 From: Bjoern Rabenstein Date: Tue, 11 Nov 2014 16:41:20 +0100 Subject: [PATCH] Drain the newBaseLabels channel upon shutdown. This should help cut down shutdown times. Change-Id: I6e70a598a9e49aa6eeeb2034105b1bc6e9014324 --- retrieval/target.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/retrieval/target.go b/retrieval/target.go index 8abe21d94..87e940362 100644 --- a/retrieval/target.go +++ b/retrieval/target.go @@ -207,6 +207,18 @@ func (t *target) recordScrapeHealth(ingester extraction.Ingester, timestamp clie // RunScraper implements Target. func (t *target) RunScraper(ingester extraction.Ingester, interval time.Duration) { + defer func() { + // Need to drain t.newBaseLabels to not make senders block during shutdown. + for { + select { + case <-t.newBaseLabels: + // Do nothing. + default: + return + } + } + }() + jitterTimer := time.NewTimer(time.Duration(float64(interval) * rand.Float64())) select { case <-jitterTimer.C: