diff --git a/pkg/services/ngalert/store/models.go b/pkg/services/ngalert/store/models.go index 775f6f54542..254ec8cb048 100644 --- a/pkg/services/ngalert/store/models.go +++ b/pkg/services/ngalert/store/models.go @@ -92,7 +92,11 @@ func (a alertRuleVersion) EqualSpec(b alertRuleVersion) bool { a.IsPaused == b.IsPaused && a.NotificationSettings == b.NotificationSettings && a.Metadata == b.Metadata && - a.MissingSeriesEvalsToResolve == b.MissingSeriesEvalsToResolve + compareInt64Pointer(a.MissingSeriesEvalsToResolve, b.MissingSeriesEvalsToResolve) +} + +func compareInt64Pointer(a, b *int64) bool { + return (a == nil && b == nil) || (a != nil && b != nil && *a == *b) } func (a alertRuleVersion) TableName() string { diff --git a/pkg/services/ngalert/store/models_test.go b/pkg/services/ngalert/store/models_test.go index e37598c3714..ddbc34b4036 100644 --- a/pkg/services/ngalert/store/models_test.go +++ b/pkg/services/ngalert/store/models_test.go @@ -71,6 +71,30 @@ func TestAlertRuleVersion_EqualSpec(t *testing.T) { b: func() alertRuleVersion { v := baseVersion; v.MissingSeriesEvalsToResolve = nil; return v }(), expect: true, }, + { + name: "same MissingSeriesEvalsToResolve value, different pointers", + a: func() alertRuleVersion { + v := baseVersion + v.MissingSeriesEvalsToResolve = util.Pointer(int64(10)) + return v + }(), + b: func() alertRuleVersion { + v := baseVersion + v.MissingSeriesEvalsToResolve = util.Pointer(int64(10)) + return v + }(), + expect: true, + }, + { + name: "different MissingSeriesEvalsToResolve", + a: func() alertRuleVersion { + v := baseVersion + v.MissingSeriesEvalsToResolve = util.Pointer(int64(123)) + return v + }(), + b: baseVersion, + expect: false, + }, { name: "different NotificationSettings", a: baseVersion,