From ea6cb8f139c39d75ae78f5d4e6fade890defa39a Mon Sep 17 00:00:00 2001 From: Santiago Date: Wed, 15 Jan 2025 13:59:50 +0100 Subject: [PATCH] Alerting: Panic when rule being evaluated has unexpected key (#99002) --- pkg/services/ngalert/schedule/alert_rule.go | 3 +-- pkg/services/ngalert/schedule/alert_rule_test.go | 5 ++++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/pkg/services/ngalert/schedule/alert_rule.go b/pkg/services/ngalert/schedule/alert_rule.go index 2eb46a1e089..2fe691ab30f 100644 --- a/pkg/services/ngalert/schedule/alert_rule.go +++ b/pkg/services/ngalert/schedule/alert_rule.go @@ -196,8 +196,7 @@ func (a *alertRule) Status() ngmodels.RuleStatus { func (a *alertRule) Eval(eval *Evaluation) (bool, *Evaluation) { if a.key.AlertRuleKey != eval.rule.GetKey() { // Make sure that rule has the same key. This should not happen - a.logger.Error("Invalid rule sent for evaluating. Skipping", "ruleKeyToEvaluate", eval.rule.GetKey().String()) - return false, eval + panic(fmt.Sprintf("Invalid rule sent for evaluating. Expected rule key %s, got %s", a.key.AlertRuleKey, eval.rule.GetKey())) } // read the channel in unblocking manner to make sure that there is no concurrent send operation. var droppedMsg *Evaluation diff --git a/pkg/services/ngalert/schedule/alert_rule_test.go b/pkg/services/ngalert/schedule/alert_rule_test.go index 7433d62ec2f..5b0187d3e8d 100644 --- a/pkg/services/ngalert/schedule/alert_rule_test.go +++ b/pkg/services/ngalert/schedule/alert_rule_test.go @@ -220,6 +220,9 @@ func TestAlertRule(t *testing.T) { } }() + rule := gen.GenerateRef() + rule.UID = r.key.UID + rule.OrgID = r.key.OrgID for i := 0; i < 10; i++ { wg.Add(1) go func() { @@ -234,7 +237,7 @@ func TestAlertRule(t *testing.T) { case 2: r.Eval(&Evaluation{ scheduledAt: time.Now(), - rule: gen.GenerateRef(), + rule: rule, folderTitle: util.GenerateShortUID(), }) case 3: