Browse Source

Merge pull request #9120 from arajkumar/fix-target_limit-error

scrape: fix 'target_limit exceeded error' when reloading conf with 0
pull/9146/head
Julien Pivotto 3 years ago committed by GitHub
parent
commit
5cc30b716e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 23
      scrape/scrape.go
  2. 4
      scrape/scrape_test.go

23
scrape/scrape.go

@ -225,11 +225,10 @@ type scrapePool struct {
cancel context.CancelFunc
// mtx must not be taken after targetMtx.
mtx sync.Mutex
config *config.ScrapeConfig
client *http.Client
loops map[uint64]loop
targetLimitHit bool // Internal state to speed up the target_limit checks.
mtx sync.Mutex
config *config.ScrapeConfig
client *http.Client
loops map[uint64]loop
targetMtx sync.Mutex
// activeTargets and loops must always be synchronized to have the same
@ -574,20 +573,14 @@ func (sp *scrapePool) sync(targets []*Target) {
// refreshTargetLimitErr returns an error that can be passed to the scrape loops
// if the number of targets exceeds the configured limit.
func (sp *scrapePool) refreshTargetLimitErr() error {
if sp.config == nil || sp.config.TargetLimit == 0 && !sp.targetLimitHit {
if sp.config == nil || sp.config.TargetLimit == 0 {
return nil
}
l := len(sp.activeTargets)
if l <= int(sp.config.TargetLimit) && !sp.targetLimitHit {
return nil
}
var err error
sp.targetLimitHit = l > int(sp.config.TargetLimit)
if sp.targetLimitHit {
if l := len(sp.activeTargets); l > int(sp.config.TargetLimit) {
targetScrapePoolExceededTargetLimit.Inc()
err = fmt.Errorf("target_limit exceeded (number of targets: %d, limit: %d)", l, sp.config.TargetLimit)
return fmt.Errorf("target_limit exceeded (number of targets: %d, limit: %d)", l, sp.config.TargetLimit)
}
return err
return nil
}
func verifyLabelLimits(lset labels.Labels, limits *labelLimits) error {

4
scrape/scrape_test.go

@ -423,6 +423,10 @@ func TestScrapePoolTargetLimit(t *testing.T) {
validateIsRunning()
validateErrorMessage(true)
reloadWithLimit(0)
validateIsRunning()
validateErrorMessage(false)
reloadWithLimit(51)
validateIsRunning()
validateErrorMessage(false)

Loading…
Cancel
Save