1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

Merge pull request #37758 from dmcgowan/fix-libcontainerd-supervisor

Fix supervisor healthcheck throttling
This commit is contained in:
Tibor Vass 2018-09-04 23:01:28 -07:00 committed by GitHub
commit 53e55db9d3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -245,6 +245,7 @@ func (r *remote) monitorDaemon(ctx context.Context) {
}() }()
for { for {
if delay != nil {
select { select {
case <-ctx.Done(): case <-ctx.Done():
r.logger.Info("stopping healthcheck following graceful shutdown") r.logger.Info("stopping healthcheck following graceful shutdown")
@ -253,12 +254,17 @@ func (r *remote) monitorDaemon(ctx context.Context) {
} }
return return
case <-delay: case <-delay:
default: }
} }
if r.daemonPid == -1 { if r.daemonPid == -1 {
if r.daemonWaitCh != nil { if r.daemonWaitCh != nil {
<-r.daemonWaitCh select {
case <-ctx.Done():
r.logger.Info("stopping containerd startup following graceful shutdown")
return
case <-r.daemonWaitCh:
}
} }
os.RemoveAll(r.GRPC.Address) os.RemoveAll(r.GRPC.Address)
@ -276,6 +282,7 @@ func (r *remote) monitorDaemon(ctx context.Context) {
} }
} }
if client != nil {
tctx, cancel := context.WithTimeout(ctx, healthCheckTimeout) tctx, cancel := context.WithTimeout(ctx, healthCheckTimeout)
_, err := client.IsServing(tctx) _, err := client.IsServing(tctx)
cancel() cancel()
@ -297,6 +304,7 @@ func (r *remote) monitorDaemon(ctx context.Context) {
delay = time.After(time.Duration(transientFailureCount) * 200 * time.Millisecond) delay = time.After(time.Duration(transientFailureCount) * 200 * time.Millisecond)
continue continue
} }
}
if system.IsProcessAlive(r.daemonPid) { if system.IsProcessAlive(r.daemonPid) {
r.logger.WithField("pid", r.daemonPid).Info("killing and restarting containerd") r.logger.WithField("pid", r.daemonPid).Info("killing and restarting containerd")
@ -304,6 +312,7 @@ func (r *remote) monitorDaemon(ctx context.Context) {
} }
client.Close() client.Close()
client = nil
r.daemonPid = -1 r.daemonPid = -1
delay = nil delay = nil
transientFailureCount = 0 transientFailureCount = 0