From 78f76b2778caef2a4a4a8498fc2934e3508acbe8 Mon Sep 17 00:00:00 2001 From: Ciprian Hacman Date: Fri, 10 Apr 2026 08:00:46 +0300 Subject: [PATCH] fix(logwatchers/kmsg): don't close parser from Stop() Closing the parser in Stop() triggers kmsgparser's read goroutine to close its output channel, which made watchLoop take the restart path (added in #1192) during intentional shutdown. Leave parser cleanup to watchLoop's defer, which is the single owner of the parser lifecycle. --- pkg/systemlogmonitor/logwatchers/kmsg/log_watcher_linux.go | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/pkg/systemlogmonitor/logwatchers/kmsg/log_watcher_linux.go b/pkg/systemlogmonitor/logwatchers/kmsg/log_watcher_linux.go index 2728ba83..04d03940 100644 --- a/pkg/systemlogmonitor/logwatchers/kmsg/log_watcher_linux.go +++ b/pkg/systemlogmonitor/logwatchers/kmsg/log_watcher_linux.go @@ -80,11 +80,8 @@ func (k *kernelLogWatcher) Watch() (<-chan *logtypes.Log, error) { return k.logCh, nil } -// Stop closes the kmsgparser +// Stop signals the watch loop to stop. func (k *kernelLogWatcher) Stop() { - if err := k.kmsgParser.Close(); err != nil { - klog.Errorf("Failed to close kmsg parser: %v", err) - } k.tomb.Stop() }