diff --git a/CHANGELOG.md b/CHANGELOG.md index 34445ad9cf..bb718737b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -77,6 +77,7 @@ * [8988](https://github.com/grafana/loki/pull/8988) **darxriggs**: Promtail: Prevent logging errors on normal shutdown. * [9155](https://github.com/grafana/loki/pull/9155) **farodin91**: Promtail: Break on iterate journal failure. +* [8987](https://github.com/grafana/loki/pull/8987) **darxriggs**: Promtail: Fix file descriptor leak. #### LogCLI diff --git a/clients/pkg/promtail/targets/journal/journaltarget.go b/clients/pkg/promtail/targets/journal/journaltarget.go index 02bceaf535..6630b827e7 100644 --- a/clients/pkg/promtail/targets/journal/journaltarget.go +++ b/clients/pkg/promtail/targets/journal/journaltarget.go @@ -56,21 +56,25 @@ var defaultJournalReaderFunc = func(c sdjournal.JournalReaderConfig) (journalRea return sdjournal.NewJournalReader(c) } -var defaultJournalEntryFunc = func(c sdjournal.JournalReaderConfig, cursor string) (*sdjournal.JournalEntry, error) { - var ( - journal *sdjournal.Journal - err error - ) +var defaultJournalEntryFunc = func(c sdjournal.JournalReaderConfig, cursor string) (entry *sdjournal.JournalEntry, err error) { + var journal *sdjournal.Journal if c.Path != "" { journal, err = sdjournal.NewJournalFromDir(c.Path) } else { journal, err = sdjournal.NewJournal() } - if err != nil { return nil, err - } else if err := journal.SeekCursor(cursor); err != nil { + } + defer func() { + if errClose := journal.Close(); err == nil { + err = errClose + } + }() + + err = journal.SeekCursor(cursor) + if err != nil { return nil, err }