From 922f465ecba882c085f3c2b7ec9bdb066206a8ed Mon Sep 17 00:00:00 2001 From: Adam Harrison Date: Wed, 16 Mar 2016 13:38:50 +0000 Subject: [PATCH] Reset retry interval if we spent long enough processing events --- common/docker/client.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/common/docker/client.go b/common/docker/client.go index 8dcec712..e341b4f0 100644 --- a/common/docker/client.go +++ b/common/docker/client.go @@ -85,6 +85,7 @@ func (c *Client) AddObserver(ob ContainerObserver) error { if err := c.AddEventListener(events); err != nil { Log.Errorf("[docker] Unable to add listener to Docker API: %s - retrying in %ds", err, retryInterval/time.Second) } else { + start := time.Now() for event := range events { switch event.Status { case "start": @@ -95,6 +96,9 @@ func (c *Client) AddObserver(ob ContainerObserver) error { ob.ContainerDied(id) } } + if time.Since(start) > retryInterval { + retryInterval = InitialInterval + } Log.Errorf("[docker] Event listener channel closed - retrying subscription in %ds", retryInterval/time.Second) } time.Sleep(retryInterval)