From 516b427d4633d6d4396a697c46810fcde1220323 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Sun, 16 Dec 2018 21:04:39 +0630 Subject: [PATCH] don't set a timer when the deadline is the zero value --- internal/utils/timer.go | 4 +++- internal/utils/timer_test.go | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/internal/utils/timer.go b/internal/utils/timer.go index 15e6fb05e..1fefc6ec8 100644 --- a/internal/utils/timer.go +++ b/internal/utils/timer.go @@ -34,7 +34,9 @@ func (t *Timer) Reset(deadline time.Time) { if !t.t.Stop() && !t.read { <-t.t.C } - t.t.Reset(time.Until(deadline)) + if !deadline.IsZero() { + t.t.Reset(time.Until(deadline)) + } t.read = false t.deadline = deadline diff --git a/internal/utils/timer_test.go b/internal/utils/timer_test.go index cf26785bd..679492797 100644 --- a/internal/utils/timer_test.go +++ b/internal/utils/timer_test.go @@ -54,6 +54,12 @@ var _ = Describe("Timer", func() { Eventually(t.Chan()).Should(Receive()) }) + It("doesn't set a timer if the deadline is the zero value", func() { + t := NewTimer() + t.Reset(time.Time{}) + Consistently(t.Chan()).ShouldNot(Receive()) + }) + It("fires the timer twice, if reset to the same deadline", func() { deadline := time.Now().Add(-time.Millisecond) t := NewTimer()