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()