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)
go func() {
if err := <-ec; err != nil && !strings.Contains(err.Error(), "EOF") {
log.WithFields(log.Fields{"name": e.Name, "id": e.ID}).Errorf("Error monitoring events: %s", err)
} else if err != nil {
log.WithFields(log.Fields{"name": e.Name, "id": e.ID}).Debug("EOF monitoring events, restarting")
if err := <-ec; err != nil {
log.WithFields(log.Fields{"name": e.Name, "id": e.ID}).Errorf("Error monitoring events: %s.", err)
if !strings.Contains(err.Error(), "EOF") {
// 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()
}
close(ec)