From 8f68b281e4bf74ffaf5f2b0be689eab4fcd8ec32 Mon Sep 17 00:00:00 2001 From: Giuseppe Scrivano Date: Wed, 16 Jan 2019 21:54:14 +0100 Subject: [PATCH] kubelet: force checking the log file every second it seems fsnotify can miss some read events, blocking the kubelet to receive more data from the log file. If we end up waiting for events with fsnotify, force a read from the log file every second so that are sure to not miss new data for longer than that. Signed-off-by: Giuseppe Scrivano --- pkg/kubelet/kuberuntime/logs/logs.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkg/kubelet/kuberuntime/logs/logs.go b/pkg/kubelet/kuberuntime/logs/logs.go index b6e41ec4ad4..3f92a80cb57 100644 --- a/pkg/kubelet/kuberuntime/logs/logs.go +++ b/pkg/kubelet/kuberuntime/logs/logs.go @@ -56,6 +56,9 @@ const ( // the container log. Kubelet should not keep following the log when the // container is not running. stateCheckPeriod = 5 * time.Second + + // logForceCheckPeriod is the period to check for a new read + logForceCheckPeriod = 1 * time.Second ) var ( @@ -426,6 +429,8 @@ func waitLogs(ctx context.Context, id string, w *fsnotify.Watcher, runtimeServic return false, false, err } errRetry-- + case <-time.After(logForceCheckPeriod): + return true, false, nil case <-time.After(stateCheckPeriod): if running, err := isContainerRunning(id, runtimeService); !running { return false, false, err