From dedb0ed9063908b7a40e7cc22b716bda262c25df Mon Sep 17 00:00:00 2001 From: Alexandre Beslic Date: Tue, 26 May 2015 14:59:38 -0700 Subject: [PATCH 1/2] Fix zookeeper watch that was triggered only once Signed-off-by: Alexandre Beslic --- pkg/store/zookeeper.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pkg/store/zookeeper.go b/pkg/store/zookeeper.go index 06eebbe1d5..0a75ed3ad6 100644 --- a/pkg/store/zookeeper.go +++ b/pkg/store/zookeeper.go @@ -157,7 +157,7 @@ func (s *Zookeeper) Watch(key string, stopCh <-chan struct{}) (<-chan *KVPair, e // Providing a non-nil stopCh can be used to stop watching. func (s *Zookeeper) WatchTree(prefix string, stopCh <-chan struct{}) (<-chan []*KVPair, error) { fprefix := normalize(prefix) - entries, stat, eventCh, err := s.client.ChildrenW(fprefix) + entries, err := s.List(prefix) if err != nil { return nil, err } @@ -168,13 +168,13 @@ func (s *Zookeeper) WatchTree(prefix string, stopCh <-chan struct{}) (<-chan []* defer close(watchCh) // GetW returns the current value before setting the watch. - kv := []*KVPair{} - for _, item := range entries { - kv = append(kv, &KVPair{prefix, []byte(item), uint64(stat.Mzxid)}) - } - watchCh <- kv + watchCh <- entries for { + _, _, eventCh, err := s.client.ChildrenW(fprefix) + if err != nil { + return + } select { case e := <-eventCh: if e.Type == zk.EventNodeChildrenChanged { From 142030f65db0be59bfda60737c497876f3ab7e1f Mon Sep 17 00:00:00 2001 From: Alexandre Beslic Date: Tue, 26 May 2015 15:03:03 -0700 Subject: [PATCH 2/2] Fix comment Signed-off-by: Alexandre Beslic --- pkg/store/zookeeper.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/store/zookeeper.go b/pkg/store/zookeeper.go index 0a75ed3ad6..9d332f4be9 100644 --- a/pkg/store/zookeeper.go +++ b/pkg/store/zookeeper.go @@ -167,7 +167,7 @@ func (s *Zookeeper) WatchTree(prefix string, stopCh <-chan struct{}) (<-chan []* go func() { defer close(watchCh) - // GetW returns the current value before setting the watch. + // List returns the current values before setting the watch. watchCh <- entries for {