From 8909fbdb227cd72b3c8adba4424d08d94b232bee Mon Sep 17 00:00:00 2001 From: blotus Date: Fri, 22 Apr 2022 10:52:44 +0200 Subject: [PATCH] cleanup container state if the reader tomb dies by itself (#1470) --- pkg/acquisition/modules/docker/docker.go | 9 +++++++++ pkg/acquisition/modules/docker/docker_test.go | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/pkg/acquisition/modules/docker/docker.go b/pkg/acquisition/modules/docker/docker.go index 4f0102adb..d46ba6c0f 100644 --- a/pkg/acquisition/modules/docker/docker.go +++ b/pkg/acquisition/modules/docker/docker.go @@ -507,6 +507,15 @@ func (d *DockerSource) TailDocker(container *ContainerConfig, outChan chan types linesRead.With(prometheus.Labels{"source": container.Name}).Inc() outChan <- evt d.logger.Debugf("Sent line to parsing: %+v", evt.Line.Raw) + case <-readerTomb.Dying(): + //This case is to handle temporarly losing the connection to the docker socket + //The only known case currently is when using docker-socket-proxy (and maybe a docker daemon restart) + d.logger.Debugf("readerTomb dying for container %s, removing it from runningContainerState", container.Name) + delete(d.runningContainerState, container.ID) + //Also reset the Since to avoid re-reading logs + d.Config.Since = time.Now().UTC().Format(time.RFC3339) + d.containerLogsOptions.Since = d.Config.Since + return nil } } } diff --git a/pkg/acquisition/modules/docker/docker_test.go b/pkg/acquisition/modules/docker/docker_test.go index 6ea99d47e..f8bfedbfc 100644 --- a/pkg/acquisition/modules/docker/docker_test.go +++ b/pkg/acquisition/modules/docker/docker_test.go @@ -183,7 +183,7 @@ container_name_regexp: ticker.Reset(1 * time.Second) case <-ticker.C: log.Infof("no more line to read") - readerTomb.Kill(nil) + streamTomb.Kill(nil) return nil } }