From db8c550570b7b8b14873b2f79b60cadb41490c83 Mon Sep 17 00:00:00 2001 From: Julien Pivotto Date: Thu, 14 Apr 2022 15:18:46 +0200 Subject: [PATCH] Revoke storing target and metadata cache in context. (#10590) Storing the scrape cache and the target (which also contains that cache) is apparently causing hige memory increase. I think me might not control the lifespan of the context enough, therefore old objects keep living in memory for longer than needed. Let's unblock the release and look for an alternative so that downstream consumers can get access to that data. Signed-off-by: Julien Pivotto --- scrape/scrape.go | 34 +--------------------------------- 1 file changed, 1 insertion(+), 33 deletions(-) diff --git a/scrape/scrape.go b/scrape/scrape.go index 5447870cc4..09e7aae360 100644 --- a/scrape/scrape.go +++ b/scrape/scrape.go @@ -298,12 +298,8 @@ func newScrapePool(cfg *config.ScrapeConfig, app storage.Appendable, jitterSeed } opts.target.SetMetadataStore(cache) - // Store the cache in the context. - loopCtx := ContextWithMetricMetadataStore(ctx, cache) - loopCtx = ContextWithTarget(loopCtx, opts.target) - return newScrapeLoop( - loopCtx, + ctx, opts.scraper, log.With(logger, "target", opts.target), buffers, @@ -1795,31 +1791,3 @@ func reusableCache(r, l *config.ScrapeConfig) bool { } return reflect.DeepEqual(zeroConfig(r), zeroConfig(l)) } - -// CtxKey is a dedicated type for keys of context-embedded values propagated -// with the scrape context. -type ctxKey int - -// Valid CtxKey values. -const ( - ctxKeyMetadata ctxKey = iota + 1 - ctxKeyTarget -) - -func ContextWithMetricMetadataStore(ctx context.Context, s MetricMetadataStore) context.Context { - return context.WithValue(ctx, ctxKeyMetadata, s) -} - -func MetricMetadataStoreFromContext(ctx context.Context) (MetricMetadataStore, bool) { - s, ok := ctx.Value(ctxKeyMetadata).(MetricMetadataStore) - return s, ok -} - -func ContextWithTarget(ctx context.Context, t *Target) context.Context { - return context.WithValue(ctx, ctxKeyTarget, t) -} - -func TargetFromContext(ctx context.Context) (*Target, bool) { - t, ok := ctx.Value(ctxKeyTarget).(*Target) - return t, ok -}