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:
commit
53e55db9d3
1 changed files with 35 additions and 26 deletions
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue