From 287b031a129e6ba6b4ba6fd1352440694a04eee0 Mon Sep 17 00:00:00 2001 From: WebStreamr <210764791+webstreamr@users.noreply.github.com> Date: Tue, 24 Jun 2025 23:20:34 +0000 Subject: [PATCH] fix(extractor): avoid cache clash between context dependent extractors --- src/extractor/ExtractorRegistry.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/extractor/ExtractorRegistry.ts b/src/extractor/ExtractorRegistry.ts index ada896c..dce8c78 100644 --- a/src/extractor/ExtractorRegistry.ts +++ b/src/extractor/ExtractorRegistry.ts @@ -21,10 +21,11 @@ export class ExtractorRegistry { } const normalizedUrl = extractor.normalize(url); + const cacheKey = `${extractor.id}_${normalizedUrl}`; - let urlResults = this.urlResultCache.get(normalizedUrl.href) ?? []; - if (this.urlResultCache.has(normalizedUrl.href)) { - return urlResults.map(urlResult => ({ ...urlResult, ttl: this.urlResultCache.getRemainingTTL(normalizedUrl.href) })); + let urlResults = this.urlResultCache.get(cacheKey) ?? []; + if (this.urlResultCache.has(cacheKey)) { + return urlResults.map(urlResult => ({ ...urlResult, ttl: this.urlResultCache.getRemainingTTL(cacheKey) })); } this.logger.info(`Extract stream URL using ${extractor.id} extractor from ${url}`, ctx); @@ -32,7 +33,7 @@ export class ExtractorRegistry { urlResults = await extractor.extract(ctx, normalizedUrl, countryCode, title); if (!urlResults.some(urlResult => urlResult.error) && extractor.ttl) { - this.urlResultCache.set(normalizedUrl.href, urlResults, { ttl: extractor.ttl }); + this.urlResultCache.set(cacheKey, urlResults, { ttl: extractor.ttl }); } return urlResults;