Merge pull request #881 from smarterclayton/etcd_closes_watch_channel

Etcd can close the watch channel for services
This commit is contained in:
Daniel Smith 2014-08-13 14:11:50 -07:00
commit 9355fae71e

View File

@ -40,6 +40,7 @@ import (
"github.com/GoogleCloudPlatform/kubernetes/pkg/api" "github.com/GoogleCloudPlatform/kubernetes/pkg/api"
"github.com/GoogleCloudPlatform/kubernetes/pkg/tools" "github.com/GoogleCloudPlatform/kubernetes/pkg/tools"
"github.com/GoogleCloudPlatform/kubernetes/pkg/util"
"github.com/coreos/go-etcd/etcd" "github.com/coreos/go-etcd/etcd"
"github.com/golang/glog" "github.com/golang/glog"
) )
@ -93,7 +94,7 @@ func (s ConfigSourceEtcd) Run() {
// Ok, so we got something back from etcd. Let's set up a watch for new services, and // Ok, so we got something back from etcd. Let's set up a watch for new services, and
// their endpoints // their endpoints
go s.WatchForChanges() go util.Forever(s.WatchForChanges, 1*time.Second)
for { for {
services, endpoints, err = s.GetServices() services, endpoints, err = s.GetServices()
@ -186,7 +187,10 @@ func (s ConfigSourceEtcd) WatchForChanges() {
watchChannel := make(chan *etcd.Response) watchChannel := make(chan *etcd.Response)
go s.client.Watch("/registry/services/", 0, true, watchChannel, nil) go s.client.Watch("/registry/services/", 0, true, watchChannel, nil)
for { for {
watchResponse := <-watchChannel watchResponse, ok := <-watchChannel
if !ok {
break
}
s.ProcessChange(watchResponse) s.ProcessChange(watchResponse)
} }
} }