From fcecf4d3cbcf1977560ea3d8ff91a169c1a72a9e Mon Sep 17 00:00:00 2001 From: Alexander Weaver Date: Wed, 1 Feb 2023 11:57:29 -0600 Subject: [PATCH] Alerting: Refactor away a layer of indirection around the goroutine in Loki state history (#62644) Inline recordStreamsAsync in loki backend --- pkg/services/ngalert/state/historian/loki.go | 22 ++++++++------------ 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/pkg/services/ngalert/state/historian/loki.go b/pkg/services/ngalert/state/historian/loki.go index 80e9ce601a1..7f56c668922 100644 --- a/pkg/services/ngalert/state/historian/loki.go +++ b/pkg/services/ngalert/state/historian/loki.go @@ -50,7 +50,15 @@ func (h *RemoteLokiBackend) TestConnection(ctx context.Context) error { func (h *RemoteLokiBackend) RecordStatesAsync(ctx context.Context, rule history_model.RuleMeta, states []state.StateTransition) <-chan error { logger := h.log.FromContext(ctx) streams := h.statesToStreams(rule, states, logger) - return h.recordStreamsAsync(ctx, streams, logger) + errCh := make(chan error, 1) + go func() { + defer close(errCh) + if err := h.recordStreams(ctx, streams, logger); err != nil { + logger.Error("Failed to save alert state history batch", "error", err) + errCh <- fmt.Errorf("failed to save alert state history batch: %w", err) + } + }() + return errCh } func (h *RemoteLokiBackend) QueryStates(ctx context.Context, query models.HistoryQuery) (*data.Frame, error) { @@ -106,18 +114,6 @@ func (h *RemoteLokiBackend) statesToStreams(rule history_model.RuleMeta, states return result } -func (h *RemoteLokiBackend) recordStreamsAsync(ctx context.Context, streams []stream, logger log.Logger) <-chan error { - errCh := make(chan error, 1) - go func() { - defer close(errCh) - if err := h.recordStreams(ctx, streams, logger); err != nil { - logger.Error("Failed to save alert state history batch", "error", err) - errCh <- fmt.Errorf("failed to save alert state history batch: %w", err) - } - }() - return errCh -} - func (h *RemoteLokiBackend) recordStreams(ctx context.Context, streams []stream, logger log.Logger) error { if err := h.client.push(ctx, streams); err != nil { return err