From 627c99424bd91c9cd57631e4a1a9e929c2685573 Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Sun, 20 Aug 2023 14:25:32 +0100 Subject: [PATCH 1/2] scrape: extend TestDroppedTargetsList to check counts Signed-off-by: Bryan Boreham --- scrape/scrape_test.go | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/scrape/scrape_test.go b/scrape/scrape_test.go index 8578f1bec6..a1b49ce801 100644 --- a/scrape/scrape_test.go +++ b/scrape/scrape_test.go @@ -88,27 +88,30 @@ func TestDroppedTargetsList(t *testing.T) { SourceLabels: model.LabelNames{"job"}, }, }, - KeepDroppedTargets: 1, } tgs = []*targetgroup.Group{ { Targets: []model.LabelSet{ {model.AddressLabel: "127.0.0.1:9090"}, + {model.AddressLabel: "127.0.0.1:9091"}, }, }, } sp, _ = newScrapePool(cfg, app, 0, nil, &Options{}) expectedLabelSetString = "{__address__=\"127.0.0.1:9090\", __scrape_interval__=\"0s\", __scrape_timeout__=\"0s\", job=\"dropMe\"}" - expectedLength = 1 + expectedLength = 2 ) sp.Sync(tgs) sp.Sync(tgs) - if len(sp.droppedTargets) != expectedLength { - t.Fatalf("Length of dropped targets exceeded expected length, expected %v, got %v", expectedLength, len(sp.droppedTargets)) - } - if sp.droppedTargets[0].DiscoveredLabels().String() != expectedLabelSetString { - t.Fatalf("Got %v, expected %v", sp.droppedTargets[0].DiscoveredLabels().String(), expectedLabelSetString) - } + require.Equal(t, expectedLength, len(sp.droppedTargets)) + require.Equal(t, expectedLength, sp.droppedTargetsCount) + require.Equal(t, expectedLabelSetString, sp.droppedTargets[0].DiscoveredLabels().String()) + + // Check that count is still correct when we don't retain all dropped targets. + sp.config.KeepDroppedTargets = 1 + sp.Sync(tgs) + require.Equal(t, 1, len(sp.droppedTargets)) + require.Equal(t, expectedLength, sp.droppedTargetsCount) } // TestDiscoveredLabelsUpdate checks that DiscoveredLabels are updated From 611f50bb3d362e07f5a98a6f806e7826b21e3f47 Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Sun, 20 Aug 2023 14:30:36 +0100 Subject: [PATCH 2/2] scrape: retain all dropped targets when KeepDroppedTargets is zero This was a bug. Signed-off-by: Bryan Boreham --- scrape/scrape.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scrape/scrape.go b/scrape/scrape.go index 40836afc20..b52616a01a 100644 --- a/scrape/scrape.go +++ b/scrape/scrape.go @@ -529,7 +529,7 @@ func (sp *scrapePool) Sync(tgs []*targetgroup.Group) { case nonEmpty: all = append(all, t) case !t.discoveredLabels.IsEmpty(): - if sp.config.KeepDroppedTargets != 0 && uint(len(sp.droppedTargets)) < sp.config.KeepDroppedTargets { + if sp.config.KeepDroppedTargets == 0 || uint(len(sp.droppedTargets)) < sp.config.KeepDroppedTargets { sp.droppedTargets = append(sp.droppedTargets, t) } sp.droppedTargetsCount++