Alerting: Update Alert Rule to use int64 for MissingSeriesEvalsToResolve (#109306)

This commit is contained in:
Moustafa Baiou
2025-08-06 21:45:48 -04:00
committed by GitHub
parent e36402a121
commit 16f8359d35
15 changed files with 50 additions and 50 deletions
+2 -2
View File
@@ -304,7 +304,7 @@ type AlertRule struct {
// required before resolving an alert state (a dimension) when data is missing.
// If nil, alerts resolve after 2 missing evaluation intervals
// (i.e., resolution occurs during the second evaluation where data is absent).
MissingSeriesEvalsToResolve *int
MissingSeriesEvalsToResolve *int64
}
type AlertRuleMetadata struct {
@@ -598,7 +598,7 @@ func (alertRule *AlertRule) GetGroupKey() AlertRuleGroupKey {
// to wait before resolving an alert rule instance when its data is missing.
// If not configured, it returns the default value (2), which means the alert
// resolves after missing for two evaluation intervals.
func (alertRule *AlertRule) GetMissingSeriesEvalsToResolve() int {
func (alertRule *AlertRule) GetMissingSeriesEvalsToResolve() int64 {
if alertRule.MissingSeriesEvalsToResolve == nil {
return 2 // default value
}
@@ -554,8 +554,8 @@ func TestDiff(t *testing.T) {
if rule1.MissingSeriesEvalsToResolve != rule2.MissingSeriesEvalsToResolve {
diff := diffs.GetDiffsForField("MissingSeriesEvalsToResolve")
assert.Len(t, diff, 1)
assert.Equal(t, *rule1.MissingSeriesEvalsToResolve, int(diff[0].Left.Int()))
assert.Equal(t, *rule2.MissingSeriesEvalsToResolve, int(diff[0].Right.Int()))
assert.Equal(t, *rule1.MissingSeriesEvalsToResolve, diff[0].Left.Int())
assert.Equal(t, *rule2.MissingSeriesEvalsToResolve, diff[0].Right.Int())
difCnt++
}
@@ -1001,14 +1001,14 @@ func TestAlertRuleGetMissingSeriesEvalsToResolve(t *testing.T) {
t.Run("should return the default 2 if MissingSeriesEvalsToResolve is nil", func(t *testing.T) {
rule := RuleGen.GenerateRef()
rule.MissingSeriesEvalsToResolve = nil
require.Equal(t, 2, rule.GetMissingSeriesEvalsToResolve())
require.Equal(t, int64(2), rule.GetMissingSeriesEvalsToResolve())
})
t.Run("should return the correct value", func(t *testing.T) {
rule := RuleGen.With(
RuleMuts.WithMissingSeriesEvalsToResolve(3),
).GenerateRef()
require.Equal(t, 3, rule.GetMissingSeriesEvalsToResolve())
require.Equal(t, int64(3), rule.GetMissingSeriesEvalsToResolve())
})
}
@@ -1113,7 +1113,7 @@ func TestValidateAlertRule(t *testing.T) {
t.Run("missingSeriesEvalsToResolve", func(t *testing.T) {
testCases := []struct {
name string
missingSeriesEvalsToResolve *int
missingSeriesEvalsToResolve *int64
expectedErrorContains string
}{
{
@@ -1122,17 +1122,17 @@ func TestValidateAlertRule(t *testing.T) {
},
{
name: "should reject negative value",
missingSeriesEvalsToResolve: util.Pointer(-1),
missingSeriesEvalsToResolve: util.Pointer[int64](-1),
expectedErrorContains: "field `missing_series_evals_to_resolve` must be greater than 0",
},
{
name: "should reject 0",
missingSeriesEvalsToResolve: util.Pointer(0),
missingSeriesEvalsToResolve: util.Pointer[int64](0),
expectedErrorContains: "field `missing_series_evals_to_resolve` must be greater than 0",
},
{
name: "should accept positive value",
missingSeriesEvalsToResolve: util.Pointer(2),
missingSeriesEvalsToResolve: util.Pointer[int64](2),
},
}
+3 -3
View File
@@ -128,7 +128,7 @@ func (g *AlertRuleGenerator) Generate() AlertRule {
Labels: labels,
NotificationSettings: ns,
Metadata: GenerateMetadata(),
MissingSeriesEvalsToResolve: util.Pointer(2),
MissingSeriesEvalsToResolve: util.Pointer[int64](2),
}
for _, mutator := range g.mutators {
@@ -514,12 +514,12 @@ func (a *AlertRuleMutators) WithSameGroup() AlertRuleMutator {
}
}
func (a *AlertRuleMutators) WithMissingSeriesEvalsToResolve(timesOfInterval int) AlertRuleMutator {
func (a *AlertRuleMutators) WithMissingSeriesEvalsToResolve(timesOfInterval int64) AlertRuleMutator {
return func(rule *AlertRule) {
if timesOfInterval <= 0 {
panic("timesOfInterval must be greater than 0")
}
rule.MissingSeriesEvalsToResolve = util.Pointer(timesOfInterval)
rule.MissingSeriesEvalsToResolve = util.Pointer[int64](timesOfInterval)
}
}