Commit 5a7929dc authored by Janet Kuo's avatar Janet Kuo

Address comments: watch.Until return private error errWatchClosed on channel closed

parent 51c7570a
...@@ -129,9 +129,6 @@ func Jitter(duration time.Duration, maxFactor float64) time.Duration { ...@@ -129,9 +129,6 @@ func Jitter(duration time.Duration, maxFactor float64) time.Duration {
// ErrWaitTimeout is returned when the condition exited without success. // ErrWaitTimeout is returned when the condition exited without success.
var ErrWaitTimeout = errors.New("timed out waiting for the condition") var ErrWaitTimeout = errors.New("timed out waiting for the condition")
// ErrChannelClosed is returned when the watch channel is closed.
var ErrChannelClosed = errors.New("watch channel closed")
// ConditionFunc returns true if the condition is satisfied, or an error // ConditionFunc returns true if the condition is satisfied, or an error
// if the loop should be aborted. // if the loop should be aborted.
type ConditionFunc func() (done bool, err error) type ConditionFunc func() (done bool, err error)
......
...@@ -17,6 +17,7 @@ limitations under the License. ...@@ -17,6 +17,7 @@ limitations under the License.
package watch package watch
import ( import (
"errors"
"time" "time"
"k8s.io/apimachinery/pkg/util/wait" "k8s.io/apimachinery/pkg/util/wait"
...@@ -28,6 +29,9 @@ import ( ...@@ -28,6 +29,9 @@ import (
// from false to true). // from false to true).
type ConditionFunc func(event Event) (bool, error) type ConditionFunc func(event Event) (bool, error)
// errWatchClosed is returned when the watch channel is closed before timeout in Until.
var errWatchClosed = errors.New("watch closed before Until timeout")
// Until reads items from the watch until each provided condition succeeds, and then returns the last watch // Until reads items from the watch until each provided condition succeeds, and then returns the last watch
// encountered. The first condition that returns an error terminates the watch (and the event is also returned). // encountered. The first condition that returns an error terminates the watch (and the event is also returned).
// If no event has been received, the returned event will be nil. // If no event has been received, the returned event will be nil.
...@@ -61,7 +65,7 @@ func Until(timeout time.Duration, watcher Interface, conditions ...ConditionFunc ...@@ -61,7 +65,7 @@ func Until(timeout time.Duration, watcher Interface, conditions ...ConditionFunc
select { select {
case event, ok := <-ch: case event, ok := <-ch:
if !ok { if !ok {
return lastEvent, wait.ErrChannelClosed return lastEvent, errWatchClosed
} }
lastEvent = &event lastEvent = &event
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment