Merge pull request #8766 from Nick-Triller/consul-sd-always-send-targetgroups

Send empty targetgroup if nothing discovered [consul_sd]
This commit is contained in:
Julien Pivotto 2021-04-30 10:27:41 +02:00 committed by GitHub
commit 2a4b8e12bb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 1 deletions

View file

@ -262,6 +262,6 @@ Here are some non-obvious parts of adding service discoveries that need to be ve
### Examples of Service Discovery pull requests
The exemples given might become out of date but should give a good impression about the areas touched by a new service discovery.
The examples given might become out of date but should give a good impression about the areas touched by a new service discovery.
- [Eureka](https://github.com/prometheus/prometheus/pull/3369)

View file

@ -426,6 +426,15 @@ func (d *Discovery) watchServices(ctx context.Context, ch chan<- []*targetgroup.
}
}
}
// Send targetgroup with no targets if nothing was discovered.
if len(services) == 0 {
select {
case <-ctx.Done():
return
case ch <- []*targetgroup.Group{{}}:
}
}
}
// consulService contains data belonging to the same service.

View file

@ -298,6 +298,23 @@ func TestAllServices(t *testing.T) {
<-ch
}
// targetgroup with no targets is emitted if no services were discovered.
func TestNoTargets(t *testing.T) {
stub, config := newServer(t)
defer stub.Close()
config.ServiceTags = []string{"missing"}
d := newDiscovery(t, config)
ctx, cancel := context.WithCancel(context.Background())
ch := make(chan []*targetgroup.Group)
go d.Run(ctx, ch)
targets := (<-ch)[0].Targets
require.Equal(t, 0, len(targets))
cancel()
}
// Watch only the test service.
func TestOneService(t *testing.T) {
stub, config := newServer(t)