few mote usefull comments
@@ -70,6 +70,8 @@ func NewManager(logger log.Logger) *Manager {
}
// Manager maintains a set of discovery providers and sends each update to a channel used by other packages.
+// Targets are grouped by target set names.
+// When a given target set doesn't include any targets the manager doesn't send any updates for this target set.
type Manager struct {
logger log.Logger
actionCh chan func(context.Context)
@@ -181,6 +183,8 @@ func (m *Manager) allGroups() map[string][]*targetgroup.Group {
for pkey, tsets := range m.targets {
del := true
for _, tg := range tsets {
+ // Don't add a target set if the target group has no targets.
+ // This happens when a Discoverer sends an empty targets array for a group to indicate that these targets have been removed.
if len(tg.Targets) != 0 {
tSetsAll[pkey.setName] = append(tSetsAll[pkey.setName], tg)
del = false
