diff --git a/discovery/http/http.go b/discovery/http/http.go index df093b6578..deacc77f07 100644 --- a/discovery/http/http.go +++ b/discovery/http/http.go @@ -104,6 +104,7 @@ type Discovery struct { url string client *http.Client refreshInterval time.Duration + tgLastLength int } // NewDiscovery returns a new HTTP discovery for the given config. @@ -183,6 +184,15 @@ func (d *Discovery) refresh(ctx context.Context) ([]*targetgroup.Group, error) { tg.Labels[httpSDURLLabel] = model.LabelValue(d.url) } + // Generate empty updates for sources that disappeared. + l := len(targetGroups) + if d.tgLastLength > l { + for i := l; i < d.tgLastLength; i++ { + targetGroups = append(targetGroups, &targetgroup.Group{Source: urlSource(d.url, i)}) + } + } + d.tgLastLength = l + return targetGroups, nil }