From 2733bac3c2f7784e963750ec083dcc2efd9ffc3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Santiago=20Hern=C3=A1ndez?= Date: Mon, 15 Dec 2025 12:06:35 +0100 Subject: [PATCH] empty 'query' field, stop sending full query JSON --- .../ngalert/api/prometheus/api_prometheus.go | 15 +++------------ pkg/services/ngalert/models/alert_query.go | 6 ++++++ 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/pkg/services/ngalert/api/prometheus/api_prometheus.go b/pkg/services/ngalert/api/prometheus/api_prometheus.go index c5ffda7abb3..e6bbe038307 100644 --- a/pkg/services/ngalert/api/prometheus/api_prometheus.go +++ b/pkg/services/ngalert/api/prometheus/api_prometheus.go @@ -1201,7 +1201,7 @@ func extractDatasourceUIDs(rule *ngmodels.AlertRule) []string { } // ruleToQuery attempts to extract the datasource queries from the alert query model. -// Returns the whole JSON model as a string if it fails to extract a minimum of 1 query. +// Returns an empty string if it fails to extract a minimum of 1 query. func ruleToQuery(logger log.Logger, rule *ngmodels.AlertRule) string { var queryErr error @@ -1229,17 +1229,8 @@ func ruleToQuery(logger log.Logger, rule *ngmodels.AlertRule) string { return strings.Join(queries, " | ") } - return encodedQueriesOrError(rule.Data) -} - -// encodedQueriesOrError tries to encode rule query data into JSON if it fails returns the encoding error as a string. -func encodedQueriesOrError(rules []ngmodels.AlertQuery) string { - encodedQueries, err := json.Marshal(rules) - if err == nil { - return string(encodedQueries) - } - - return err.Error() + // No queries extracted, return an empty string. + return "" } func errorOrEmpty(err error) string { diff --git a/pkg/services/ngalert/models/alert_query.go b/pkg/services/ngalert/models/alert_query.go index 3f03ae2e68f..3c961f8efd4 100644 --- a/pkg/services/ngalert/models/alert_query.go +++ b/pkg/services/ngalert/models/alert_query.go @@ -110,6 +110,12 @@ func (aq *AlertQuery) String() string { } func (aq *AlertQuery) setModelProps() error { + if aq.Model == nil { + // No data to extract, use an empty map. + aq.modelProps = map[string]any{} + return nil + } + aq.modelProps = make(map[string]any) err := json.Unmarshal(aq.Model, &aq.modelProps) if err != nil {