Manager should retry EventMonitoring on failure.

Signed-off-by: Dong Chen <dongluo.chen@docker.com>
This commit is contained in:
Dong Chen 2016-03-15 16:48:33 -07:00
parent e0b5e6f5fa
commit 26931816c4
1 changed files with 7 additions and 4 deletions

View File

@ -183,10 +183,13 @@ func (e *Engine) StartMonitorEvents() {
e.client.StartMonitorEvents(e.handler, ec) e.client.StartMonitorEvents(e.handler, ec)
go func() { go func() {
if err := <-ec; err != nil && !strings.Contains(err.Error(), "EOF") { if err := <-ec; err != nil {
log.WithFields(log.Fields{"name": e.Name, "id": e.ID}).Errorf("Error monitoring events: %s", err) log.WithFields(log.Fields{"name": e.Name, "id": e.ID}).Errorf("Error monitoring events: %s.", err)
} else if err != nil { if !strings.Contains(err.Error(), "EOF") {
log.WithFields(log.Fields{"name": e.Name, "id": e.ID}).Debug("EOF monitoring events, restarting") // failing node reconnect should use back-off strategy
<-e.refreshDelayer.Wait(e.failureCount)
}
log.WithFields(log.Fields{"name": e.Name, "id": e.ID}).Errorf("Restart event monitoring.")
e.StartMonitorEvents() e.StartMonitorEvents()
} }
close(ec) close(ec)