From f3018162d144ffbe2a63967516e4cb5608446b4e Mon Sep 17 00:00:00 2001 From: Eric Tune Date: Wed, 23 Sep 2015 16:32:05 -0700 Subject: [PATCH] Revert "Check the condition immediately in util.Wait funcs" --- pkg/util/wait/wait.go | 7 ++----- pkg/util/wait/wait_test.go | 4 ++-- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/pkg/util/wait/wait.go b/pkg/util/wait/wait.go index 84c06ed6378..61dab005a1b 100644 --- a/pkg/util/wait/wait.go +++ b/pkg/util/wait/wait.go @@ -44,6 +44,8 @@ type ConditionFunc func() (done bool, err error) // is reached. condition will always be invoked at least once but some intervals // may be missed if the condition takes too long or the time window is too short. // If you want to Poll something forever, see PollInfinite. +// Poll always waits the interval before the first check of the condition. +// TODO: create a separate PollImmediate function that does not wait. func Poll(interval, timeout time.Duration, condition ConditionFunc) error { return WaitFor(poller(interval, timeout), condition) } @@ -88,12 +90,7 @@ func WaitFor(wait WaitFunc, c ConditionFunc) error { func poller(interval, timeout time.Duration) WaitFunc { return WaitFunc(func() <-chan struct{} { ch := make(chan struct{}) - go func() { - // send to the channel once immediately, rather than waiting for the first - // interval to elapse - ch <- struct{}{} - tick := time.NewTicker(interval) defer tick.Stop() var after <-chan time.Time diff --git a/pkg/util/wait/wait_test.go b/pkg/util/wait/wait_test.go index 9e4e71a3972..ddc8934b0d4 100644 --- a/pkg/util/wait/wait_test.go +++ b/pkg/util/wait/wait_test.go @@ -40,8 +40,8 @@ DRAIN: t.Errorf("unexpected timeout after poll") } } - if count < 2 { - t.Errorf("expected at least two values, got %d", count) + if count > 3 { + t.Errorf("expected up to three values, got %d", count) } }