rules.NewGroup: Fix when no logger is passed (#15356)

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
pull/15438/head
Arve Knudsen 2024-11-21 16:53:06 +01:00 committed by GitHub
parent 125a90899c
commit c2e28f21ba
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 20 additions and 7 deletions

View File

@ -99,9 +99,13 @@ type GroupOptions struct {
// NewGroup makes a new Group with the given name, options, and rules. // NewGroup makes a new Group with the given name, options, and rules.
func NewGroup(o GroupOptions) *Group { func NewGroup(o GroupOptions) *Group {
metrics := o.Opts.Metrics opts := o.Opts
if opts == nil {
opts = &ManagerOptions{}
}
metrics := opts.Metrics
if metrics == nil { if metrics == nil {
metrics = NewGroupMetrics(o.Opts.Registerer) metrics = NewGroupMetrics(opts.Registerer)
} }
key := GroupKey(o.File, o.Name) key := GroupKey(o.File, o.Name)
@ -120,13 +124,13 @@ func NewGroup(o GroupOptions) *Group {
evalIterationFunc = DefaultEvalIterationFunc evalIterationFunc = DefaultEvalIterationFunc
} }
concurrencyController := o.Opts.RuleConcurrencyController concurrencyController := opts.RuleConcurrencyController
if concurrencyController == nil { if concurrencyController == nil {
concurrencyController = sequentialRuleEvalController{} concurrencyController = sequentialRuleEvalController{}
} }
if o.Opts.Logger == nil { if opts.Logger == nil {
promslog.NewNopLogger() opts.Logger = promslog.NewNopLogger()
} }
return &Group{ return &Group{
@ -137,12 +141,12 @@ func NewGroup(o GroupOptions) *Group {
limit: o.Limit, limit: o.Limit,
rules: o.Rules, rules: o.Rules,
shouldRestore: o.ShouldRestore, shouldRestore: o.ShouldRestore,
opts: o.Opts, opts: opts,
seriesInPreviousEval: make([]map[string]labels.Labels, len(o.Rules)), seriesInPreviousEval: make([]map[string]labels.Labels, len(o.Rules)),
done: make(chan struct{}), done: make(chan struct{}),
managerDone: o.done, managerDone: o.done,
terminated: make(chan struct{}), terminated: make(chan struct{}),
logger: o.Opts.Logger.With("file", o.File, "group", o.Name), logger: opts.Logger.With("file", o.File, "group", o.Name),
metrics: metrics, metrics: metrics,
evalIterationFunc: evalIterationFunc, evalIterationFunc: evalIterationFunc,
concurrencyController: concurrencyController, concurrencyController: concurrencyController,

View File

@ -17,9 +17,18 @@ import (
"testing" "testing"
"time" "time"
"github.com/prometheus/common/promslog"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
) )
func TestNewGroup(t *testing.T) {
g := NewGroup(GroupOptions{
File: "test-file",
Name: "test-name",
})
require.Equal(t, promslog.NewNopLogger().With("file", "test-file", "group", "test-name"), g.logger)
}
func TestGroup_Equals(t *testing.T) { func TestGroup_Equals(t *testing.T) {
tests := map[string]struct { tests := map[string]struct {
first *Group first *Group