Remove deleted target from discovery manager

Signed-off-by: haleyao <haleyao@tencent.com>
This commit is contained in:
haleyao 2023-07-09 21:33:31 +08:00
parent 26c354de0b
commit c5a37ddad5
4 changed files with 17 additions and 22 deletions

View File

@ -270,7 +270,12 @@ func (m *Manager) updateGroup(poolKey poolKey, tgs []*targetgroup.Group) {
} }
for _, tg := range tgs { for _, tg := range tgs {
if tg != nil { // Some Discoverers send nil target group so need to check for it to avoid panics. if tg != nil { // Some Discoverers send nil target group so need to check for it to avoid panics.
m.targets[poolKey][tg.Source] = tg // Remove the deleted target.
if len(tg.Targets) == 0 && len(tg.Labels) == 0 {
delete(m.targets[poolKey], tg.Source)
} else {
m.targets[poolKey][tg.Source] = tg
}
} }
} }
} }

View File

@ -824,13 +824,9 @@ func TestTargetSetRecreatesEmptyStaticConfigs(t *testing.T) {
if !ok { if !ok {
t.Fatalf("'%v' should be present in target groups", pkey) t.Fatalf("'%v' should be present in target groups", pkey)
} }
group, ok := targetGroups[""] _, ok = targetGroups[""]
if !ok { if ok {
t.Fatalf("missing '' key in target groups %v", targetGroups) t.Fatalf("Target groups should be empty, got %v", targetGroups)
}
if len(group.Targets) != 0 {
t.Fatalf("Invalid number of targets: expected 0, got %d", len(group.Targets))
} }
} }

View File

@ -387,7 +387,12 @@ func (m *Manager) updateGroup(poolKey poolKey, tgs []*targetgroup.Group) {
} }
for _, tg := range tgs { for _, tg := range tgs {
if tg != nil { // Some Discoverers send nil target group so need to check for it to avoid panics. if tg != nil { // Some Discoverers send nil target group so need to check for it to avoid panics.
m.targets[poolKey][tg.Source] = tg // Remove the deleted target.
if len(tg.Targets) == 0 && len(tg.Labels) == 0 {
delete(m.targets[poolKey], tg.Source)
} else {
m.targets[poolKey][tg.Source] = tg
}
} }
} }
} }

View File

@ -1044,19 +1044,8 @@ func TestTargetSetRecreatesEmptyStaticConfigs(t *testing.T) {
if !ok { if !ok {
t.Fatalf("'%v' should be present in target groups", p) t.Fatalf("'%v' should be present in target groups", p)
} }
group, ok := targetGroups[""] require.Equal(t, 0, len(targetGroups))
if !ok { require.Equal(t, 0, len(syncedTargets))
t.Fatalf("missing '' key in target groups %v", targetGroups)
}
if len(group.Targets) != 0 {
t.Fatalf("Invalid number of targets: expected 0, got %d", len(group.Targets))
}
require.Equal(t, 1, len(syncedTargets))
require.Equal(t, 1, len(syncedTargets["prometheus"]))
if lbls := syncedTargets["prometheus"][0].Labels; lbls != nil {
t.Fatalf("Unexpected Group: expected nil Labels, got %v", lbls)
}
} }
func TestIdenticalConfigurationsAreCoalesced(t *testing.T) { func TestIdenticalConfigurationsAreCoalesced(t *testing.T) {