From 6eee86dce80e26160543aa75985036f581ff4226 Mon Sep 17 00:00:00 2001 From: Fabian Reinartz Date: Tue, 12 Jan 2016 10:52:40 +0100 Subject: [PATCH] Terminate rule groups during initial sleep When an evaluation group runs initially, it waits a deterministic amount of time. During that time it also has to accept a termination singnal so shutdown doesn't hang during the first evaluation iteration after a configuration reload. Fixes #1307 --- rules/manager.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/rules/manager.go b/rules/manager.go index 84eb0697e5..212c9f9e5c 100644 --- a/rules/manager.go +++ b/rules/manager.go @@ -123,7 +123,11 @@ func (g *Group) run() { defer close(g.terminated) // Wait an initial amount to have consistently slotted intervals. - time.Sleep(g.offset()) + select { + case <-time.After(g.offset()): + case <-g.done: + return + } iter := func() { start := time.Now()