Do not block on stream server close.
Signed-off-by: Lantao Liu <lantaol@google.com>
This commit is contained in:
parent
df461c0d48
commit
6d538ccbf6
@ -106,7 +106,6 @@ write_files:
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
RemainAfterExit=yes
|
||||
RemainAfterExit=yes
|
||||
ExecStartPre=/bin/chmod 544 /home/cri-containerd/opt/cri-containerd/cluster/health-monitor.sh
|
||||
ExecStart=/bin/bash -c 'CRICTL=/home/cri-containerd/usr/local/bin/crictl \
|
||||
/home/cri-containerd/opt/cri-containerd/cluster/health-monitor.sh'
|
||||
@ -176,7 +175,6 @@ write_files:
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
RemainAfterExit=yes
|
||||
RemainAfterExit=yes
|
||||
ExecStartPre=/bin/chmod 544 /home/kubernetes/bin/health-monitor.sh
|
||||
ExecStart=/home/kubernetes/bin/health-monitor.sh kubelet
|
||||
|
||||
|
@ -106,7 +106,6 @@ write_files:
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
RemainAfterExit=yes
|
||||
RemainAfterExit=yes
|
||||
ExecStartPre=/bin/chmod 544 /home/cri-containerd/opt/cri-containerd/cluster/health-monitor.sh
|
||||
ExecStart=/bin/bash -c 'CRICTL=/home/cri-containerd/usr/local/bin/crictl \
|
||||
/home/cri-containerd/opt/cri-containerd/cluster/health-monitor.sh'
|
||||
@ -175,7 +174,6 @@ write_files:
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
RemainAfterExit=yes
|
||||
RemainAfterExit=yes
|
||||
ExecStartPre=/bin/chmod 544 /home/kubernetes/bin/health-monitor.sh
|
||||
ExecStart=/home/kubernetes/bin/health-monitor.sh kubelet
|
||||
|
||||
|
@ -262,8 +262,21 @@ func (c *criContainerdService) Run(startGRPC bool) error {
|
||||
|
||||
<-eventMonitorCloseCh
|
||||
logrus.Info("Event monitor stopped")
|
||||
<-streamServerCloseCh
|
||||
logrus.Info("Stream server stopped")
|
||||
// There is a race condition with http.Server.Serve.
|
||||
// When `Close` is called at the same time with `Serve`, `Close`
|
||||
// may finish first, and `Serve` may still block.
|
||||
// See https://github.com/golang/go/issues/20239.
|
||||
// Here we set a 2 second timeout for the stream server wait,
|
||||
// if it timeout, an error log is generated.
|
||||
// TODO(random-liu): Get rid of this after https://github.com/golang/go/issues/20239
|
||||
// is fixed.
|
||||
const streamServerStopTimeout = 2 * time.Second
|
||||
select {
|
||||
case <-streamServerCloseCh:
|
||||
logrus.Info("Stream server stopped")
|
||||
case <-time.After(streamServerStopTimeout):
|
||||
logrus.Errorf("Stream server is not stopped in %q", streamServerStopTimeout)
|
||||
}
|
||||
if startGRPC {
|
||||
// Only wait for grpc server close channel when grpc server is started.
|
||||
<-grpcServerCloseCh
|
||||
|
Loading…
Reference in New Issue
Block a user