Use buffered chan to avoid losing docker events

Docker imposes a limit that events have to be retrieved within 100ms
or they are dropped on the sending side. Adding buffer space within
the Weave Net process allows those events to be collected from Docker
more quickly.

1024 is an arbitrary number, much higher than we expect to need.
This commit is contained in:
Bryan Boreham committed 2019-09-30 15:16:24 +00:00
1 parent 9971fc3dac
commit ee47f0c3ee
1 file changed
+3 -1
+3 -1
View File
@@ -99,7 +99,9 @@ func (c *Client) AddObserver(ob ContainerObserver) error {
pending := make(pendingStarts)
retryInterval := InitialInterval
for {
events := make(chan *docker.APIEvents)
// Use a buffered chan so the client library can run ahead of the listener
// - Docker will drop an event if it is not collected quickly enough.
events := make(chan *docker.APIEvents, 1024)
if err := c.AddEventListener(events); err != nil {
c.errorf("Unable to add listener to Docker API: %s - retrying in %ds", err, retryInterval/time.Second)
} else {