diff --git a/pkg/services/ngalert/notifier/channels/slack.go b/pkg/services/ngalert/notifier/channels/slack.go index 57fee6e2541..71cc5440860 100644 --- a/pkg/services/ngalert/notifier/channels/slack.go +++ b/pkg/services/ngalert/notifier/channels/slack.go @@ -477,6 +477,11 @@ func (sn *SlackNotifier) createImageMultipart(image ngmodels.Image, channel, com if err != nil { return nil, nil, err } + defer func() { + if err := f.Close(); err != nil { + sn.log.Error("Failed to close image file reader", "error", err) + } + }() fw, err := w.CreateFormFile("file", image.Path) if err != nil { diff --git a/pkg/services/ngalert/notifier/channels/slack_test.go b/pkg/services/ngalert/notifier/channels/slack_test.go index 98fa6278b8a..8b15177da54 100644 --- a/pkg/services/ngalert/notifier/channels/slack_test.go +++ b/pkg/services/ngalert/notifier/channels/slack_test.go @@ -409,6 +409,7 @@ func setupSlackForTests(t *testing.T, settings string) (*SlackNotifier, *slackRe f, err := os.Create(t.TempDir() + "test.png") require.NoError(t, err) t.Cleanup(func() { + _ = f.Close() if err := os.Remove(f.Name()); err != nil { t.Logf("failed to delete test file: %s", err) }