mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Sleep before restarting event processing
This prevents restarting event processing in a tight loop. You can see this with the following steps: ```terminal $ containerd & $ dockerd --containerd=/run/containerd/containerd.sock & $ pkill -9 containerd ``` At this point you will be spammed with logs such as: ``` ERRO[2019-07-12T22:29:37.318761400Z] failed to get event error="rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = \"transport: Error while dialing dial unix /run/containerd/containerd.sock: connect: connection refused\"" module=libcontainerd namespace=plugins.moby ``` Without this change you can quickly end up with gigabytes of log data. Signed-off-by: Brian Goff <cpuguy83@gmail.com>
This commit is contained in:
parent
2fc3480222
commit
1acaf2aabe
1 changed files with 9 additions and 3 deletions
|
@ -703,10 +703,16 @@ func (c *client) processEventStream(ctx context.Context, ns string) {
|
||||||
errStatus, ok := status.FromError(err)
|
errStatus, ok := status.FromError(err)
|
||||||
if !ok || errStatus.Code() != codes.Canceled {
|
if !ok || errStatus.Code() != codes.Canceled {
|
||||||
c.logger.WithError(err).Error("failed to get event")
|
c.logger.WithError(err).Error("failed to get event")
|
||||||
go c.processEventStream(ctx, ns)
|
|
||||||
} else {
|
// rate limit
|
||||||
c.logger.WithError(ctx.Err()).Info("stopping event stream following graceful shutdown")
|
select {
|
||||||
|
case <-time.After(time.Second):
|
||||||
|
go c.processEventStream(ctx, ns)
|
||||||
|
return
|
||||||
|
case <-ctx.Done():
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
c.logger.WithError(ctx.Err()).Info("stopping event stream following graceful shutdown")
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
case ev = <-eventStream:
|
case ev = <-eventStream:
|
||||||
|
|
Loading…
Reference in a new issue