From 78bec77ca1fef29aea3f2f703a34629aa76221e8 Mon Sep 17 00:00:00 2001 From: Alexander Akhmetov Date: Wed, 18 Jun 2025 07:53:48 +0200 Subject: [PATCH] Alerting: Fix NewDatasourceWriter initialization (#106869) Fix NewDatasourceWriter initialization --- pkg/services/ngalert/ngalert.go | 8 +++++--- pkg/services/ngalert/ngalert_test.go | 16 ++++++++-------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/pkg/services/ngalert/ngalert.go b/pkg/services/ngalert/ngalert.go index e562459cd29..066d7c5672a 100644 --- a/pkg/services/ngalert/ngalert.go +++ b/pkg/services/ngalert/ngalert.go @@ -374,6 +374,7 @@ func (ng *AlertNG) init() error { ac.NewRuleService(ng.accesscontrol), ng.DataSourceService, ng.httpClientProvider, + ng.pluginContextProvider, clk, ng.Metrics.GetRemoteWriterMetrics(), ) @@ -632,6 +633,7 @@ func configureHistorianBackend( ac historian.AccessControl, datasourceService datasources.DataSourceService, httpClientProvider httpclient.Provider, + pluginContextProvider *plugincontext.Provider, clock clock.Clock, mw *metrics.RemoteWriter, ) (Historian, error) { @@ -649,7 +651,7 @@ func configureHistorianBackend( if backend == historian.BackendTypeMultiple { primaryCfg := cfg primaryCfg.Backend = cfg.MultiPrimary - primary, err := configureHistorianBackend(ctx, primaryCfg, ar, ds, rs, met, l, tracer, ac, datasourceService, httpClientProvider, clock, mw) + primary, err := configureHistorianBackend(ctx, primaryCfg, ar, ds, rs, met, l, tracer, ac, datasourceService, httpClientProvider, pluginContextProvider, clock, mw) if err != nil { return nil, fmt.Errorf("multi-backend target \"%s\" was misconfigured: %w", cfg.MultiPrimary, err) } @@ -658,7 +660,7 @@ func configureHistorianBackend( for _, b := range cfg.MultiSecondaries { secCfg := cfg secCfg.Backend = b - sec, err := configureHistorianBackend(ctx, secCfg, ar, ds, rs, met, l, tracer, ac, datasourceService, httpClientProvider, clock, mw) + sec, err := configureHistorianBackend(ctx, secCfg, ar, ds, rs, met, l, tracer, ac, datasourceService, httpClientProvider, pluginContextProvider, clock, mw) if err != nil { return nil, fmt.Errorf("multi-backend target \"%s\" was miconfigured: %w", b, err) } @@ -702,7 +704,7 @@ func configureHistorianBackend( } logCtx := log.WithContextualAttributes(ctx, []any{"backend", "prometheus"}) prometheusBackendLogger := log.New("ngalert.state.historian").FromContext(logCtx) - w := writer.NewDatasourceWriter(writerCfg, datasourceService, httpClientProvider, clock, prometheusBackendLogger, mw) + w := writer.NewDatasourceWriter(writerCfg, datasourceService, httpClientProvider, pluginContextProvider, clock, prometheusBackendLogger, mw) if w == nil { return nil, fmt.Errorf("failed to create alert state metrics writer") } diff --git a/pkg/services/ngalert/ngalert_test.go b/pkg/services/ngalert/ngalert_test.go index 001055f92d3..a0b42309f47 100644 --- a/pkg/services/ngalert/ngalert_test.go +++ b/pkg/services/ngalert/ngalert_test.go @@ -90,7 +90,7 @@ func TestConfigureHistorianBackend(t *testing.T) { } ac := &acfakes.FakeRuleService{} - _, err := configureHistorianBackend(context.Background(), cfg, nil, nil, nil, met, logger, tracer, ac, nil, nil, nil, nil) + _, err := configureHistorianBackend(context.Background(), cfg, nil, nil, nil, met, logger, tracer, ac, nil, nil, nil, nil, nil) require.ErrorContains(t, err, "unrecognized") }) @@ -106,7 +106,7 @@ func TestConfigureHistorianBackend(t *testing.T) { } ac := &acfakes.FakeRuleService{} - _, err := configureHistorianBackend(context.Background(), cfg, nil, nil, nil, met, logger, tracer, ac, nil, nil, nil, nil) + _, err := configureHistorianBackend(context.Background(), cfg, nil, nil, nil, met, logger, tracer, ac, nil, nil, nil, nil, nil) require.ErrorContains(t, err, "multi-backend target") require.ErrorContains(t, err, "unrecognized") @@ -124,7 +124,7 @@ func TestConfigureHistorianBackend(t *testing.T) { } ac := &acfakes.FakeRuleService{} - _, err := configureHistorianBackend(context.Background(), cfg, nil, nil, nil, met, logger, tracer, ac, nil, nil, nil, nil) + _, err := configureHistorianBackend(context.Background(), cfg, nil, nil, nil, met, logger, tracer, ac, nil, nil, nil, nil, nil) require.ErrorContains(t, err, "multi-backend target") require.ErrorContains(t, err, "unrecognized") @@ -143,7 +143,7 @@ func TestConfigureHistorianBackend(t *testing.T) { } ac := &acfakes.FakeRuleService{} - h, err := configureHistorianBackend(context.Background(), cfg, nil, nil, nil, met, logger, tracer, ac, nil, nil, nil, nil) + h, err := configureHistorianBackend(context.Background(), cfg, nil, nil, nil, met, logger, tracer, ac, nil, nil, nil, nil, nil) require.NotNil(t, h) require.NoError(t, err) @@ -160,7 +160,7 @@ func TestConfigureHistorianBackend(t *testing.T) { } ac := &acfakes.FakeRuleService{} - _, err := configureHistorianBackend(context.Background(), cfg, nil, nil, nil, met, logger, tracer, ac, nil, nil, nil, nil) + _, err := configureHistorianBackend(context.Background(), cfg, nil, nil, nil, met, logger, tracer, ac, nil, nil, nil, nil, nil) require.Error(t, err) require.ErrorContains(t, err, "datasource UID must not be empty") @@ -178,7 +178,7 @@ func TestConfigureHistorianBackend(t *testing.T) { } ac := &acfakes.FakeRuleService{} - h, err := configureHistorianBackend(context.Background(), cfg, nil, nil, nil, met, logger, tracer, ac, nil, nil, nil, nil) + h, err := configureHistorianBackend(context.Background(), cfg, nil, nil, nil, met, logger, tracer, ac, nil, nil, nil, nil, nil) require.NotNil(t, h) require.NoError(t, err) @@ -195,7 +195,7 @@ func TestConfigureHistorianBackend(t *testing.T) { } ac := &acfakes.FakeRuleService{} - h, err := configureHistorianBackend(context.Background(), cfg, nil, nil, nil, met, logger, tracer, ac, nil, nil, nil, nil) + h, err := configureHistorianBackend(context.Background(), cfg, nil, nil, nil, met, logger, tracer, ac, nil, nil, nil, nil, nil) require.NotNil(t, h) require.NoError(t, err) @@ -218,7 +218,7 @@ grafana_alerting_state_history_info{backend="annotations"} 1 } ac := &acfakes.FakeRuleService{} - h, err := configureHistorianBackend(context.Background(), cfg, nil, nil, nil, met, logger, tracer, ac, nil, nil, nil, nil) + h, err := configureHistorianBackend(context.Background(), cfg, nil, nil, nil, met, logger, tracer, ac, nil, nil, nil, nil, nil) require.NotNil(t, h) require.NoError(t, err)