diff --git a/plugins/inputs/tail/tail.go b/plugins/inputs/tail/tail.go index f6a71aaf3..95d6ea851 100644 --- a/plugins/inputs/tail/tail.go +++ b/plugins/inputs/tail/tail.go @@ -370,6 +370,11 @@ func (t *Tail) receiver(parser telegraf.Parser, tailer *tail.Tail) { select { case <-t.ctx.Done(): return + // Tail is trying to close so drain the sem to allow the receiver + // to exit. This condition is hit when the tailer may have hit the + // maximum undelivered lines and is trying to close. + case <-tailer.Dying(): + <-t.sem case t.sem <- empty{}: t.acc.AddTrackingMetricGroup(metrics) }