etcd3/watcher: logging error

This commit is contained in:
Hongchao Deng 2016-09-15 17:15:01 -07:00
parent fcc97f37ee
commit 3e9af272d5

View File

@ -158,6 +158,7 @@ func (wc *watchChan) sync() error {
func (wc *watchChan) startWatching() {
if wc.initialRev == 0 {
if err := wc.sync(); err != nil {
glog.Errorf("failed to sync with latest state: %v", err)
wc.sendError(err)
return
}
@ -169,8 +170,10 @@ func (wc *watchChan) startWatching() {
wch := wc.watcher.client.Watch(wc.ctx, wc.key, opts...)
for wres := range wch {
if wres.Err() != nil {
err := wres.Err()
// If there is an error on server (e.g. compaction), the channel will return it before closed.
wc.sendError(wres.Err())
glog.Errorf("watch chan error: %v", err)
wc.sendError(err)
return
}
for _, e := range wres.Events {
@ -219,6 +222,7 @@ func (wc *watchChan) processEvent(wg *sync.WaitGroup) {
func (wc *watchChan) transform(e *event) (res *watch.Event) {
curObj, oldObj, err := prepareObjs(wc.ctx, e, wc.watcher.client, wc.watcher.codec, wc.watcher.versioner)
if err != nil {
glog.Errorf("failed to prepare current and previous objects: %v", err)
wc.sendError(err)
return nil
}