From 9bad6fd44227a69571bacb46e458765ebee84d52 Mon Sep 17 00:00:00 2001 From: Vimal K Date: Sat, 1 Sep 2018 18:18:24 +0530 Subject: [PATCH] contrib/recipes/watch.go : cancel() the watch after desired watch event fixes #9882 --- contrib/recipes/watch.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/contrib/recipes/watch.go b/contrib/recipes/watch.go index 025d73c5a..f8c2ab772 100644 --- a/contrib/recipes/watch.go +++ b/contrib/recipes/watch.go @@ -23,7 +23,9 @@ import ( // WaitEvents waits on a key until it observes the given events and returns the final one. func WaitEvents(c *clientv3.Client, key string, rev int64, evs []mvccpb.Event_EventType) (*clientv3.Event, error) { - wc := c.Watch(context.Background(), key, clientv3.WithRev(rev)) + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + wc := c.Watch(ctx, key, clientv3.WithRev(rev)) if wc == nil { return nil, ErrNoWatcher } @@ -31,7 +33,9 @@ func WaitEvents(c *clientv3.Client, key string, rev int64, evs []mvccpb.Event_Ev } func WaitPrefixEvents(c *clientv3.Client, prefix string, rev int64, evs []mvccpb.Event_EventType) (*clientv3.Event, error) { - wc := c.Watch(context.Background(), prefix, clientv3.WithPrefix(), clientv3.WithRev(rev)) + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + wc := c.Watch(ctx, prefix, clientv3.WithPrefix(), clientv3.WithRev(rev)) if wc == nil { return nil, ErrNoWatcher }