From c1300c81b3272728c983839f7ef7da28e0fbc5be Mon Sep 17 00:00:00 2001 From: Anthony Romano Date: Fri, 21 Apr 2017 16:19:43 -0700 Subject: [PATCH] concurrency: clarify Observe semantics; only fetches subsequence --- clientv3/concurrency/election.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/clientv3/concurrency/election.go b/clientv3/concurrency/election.go index 90c7c667c..257cc78af 100644 --- a/clientv3/concurrency/election.go +++ b/clientv3/concurrency/election.go @@ -148,9 +148,13 @@ func (e *Election) Leader(ctx context.Context) (*v3.GetResponse, error) { return resp, nil } -// Observe returns a channel that observes all leader proposal values as -// GetResponse values on the current leader key. The channel closes when -// the context is cancelled or the underlying watcher is otherwise disrupted. +// Observe returns a channel that reliably observes ordered leader proposals +// as GetResponse values on every current elected leader key. It will not +// necessarily fetch all historical leader updates, but will always post the +// most recent leader value. +// +// The channel closes when the context is canceled or the underlying watcher +// is otherwise disrupted. func (e *Election) Observe(ctx context.Context) <-chan v3.GetResponse { retc := make(chan v3.GetResponse) go e.observe(ctx, retc)