mirror of
https://github.com/prometheus/prometheus.git
synced 2025-02-21 03:16:00 -08:00
Merge pull request #2731 from brancz/lset-non-cloned
notifier: clone and not reuse LabelSet in AM discovery
This commit is contained in:
commit
b916b3784b
|
@ -500,6 +500,7 @@ func alertmanagerFromGroup(tg *config.TargetGroup, cfg *config.AlertmanagerConfi
|
||||||
var res []alertmanager
|
var res []alertmanager
|
||||||
|
|
||||||
for _, lset := range tg.Targets {
|
for _, lset := range tg.Targets {
|
||||||
|
lset = lset.Clone()
|
||||||
// Set configured scheme as the initial scheme label for overwrite.
|
// Set configured scheme as the initial scheme label for overwrite.
|
||||||
lset[model.SchemeLabel] = model.LabelValue(cfg.Scheme)
|
lset[model.SchemeLabel] = model.LabelValue(cfg.Scheme)
|
||||||
lset[pathLabel] = model.LabelValue(postPath(cfg.PathPrefix))
|
lset[pathLabel] = model.LabelValue(postPath(cfg.PathPrefix))
|
||||||
|
@ -510,7 +511,8 @@ func alertmanagerFromGroup(tg *config.TargetGroup, cfg *config.AlertmanagerConfi
|
||||||
lset[ln] = lv
|
lset[ln] = lv
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lset := relabel.Process(lset, cfg.RelabelConfigs...)
|
|
||||||
|
lset = relabel.Process(lset, cfg.RelabelConfigs...)
|
||||||
if lset == nil {
|
if lset == nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
|
@ -418,3 +418,30 @@ type alertmanagerMock struct {
|
||||||
func (a alertmanagerMock) url() string {
|
func (a alertmanagerMock) url() string {
|
||||||
return a.urlf()
|
return a.urlf()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestLabelSetNotReused(t *testing.T) {
|
||||||
|
tg := makeInputTargetGroup()
|
||||||
|
_, err := alertmanagerFromGroup(tg, &config.AlertmanagerConfig{})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if !reflect.DeepEqual(tg, makeInputTargetGroup()) {
|
||||||
|
t.Fatal("Target modified during alertmanager extraction")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func makeInputTargetGroup() *config.TargetGroup {
|
||||||
|
return &config.TargetGroup{
|
||||||
|
Targets: []model.LabelSet{
|
||||||
|
model.LabelSet{
|
||||||
|
model.AddressLabel: model.LabelValue("1.1.1.1:9090"),
|
||||||
|
model.LabelName("notcommon1"): model.LabelValue("label"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Labels: model.LabelSet{
|
||||||
|
model.LabelName("common"): model.LabelValue("label"),
|
||||||
|
},
|
||||||
|
Source: "testsource",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue