From e0d2a759b631228a7a1949c53f38e4b329ecf1d8 Mon Sep 17 00:00:00 2001 From: Thijs Louisse Date: Thu, 20 Mar 2025 09:15:47 +0100 Subject: [PATCH] fix(providence): fix ast cache (prevent from endless expanding); expose amountOfCachedProjects --- .changeset/sweet-seals-fold.md | 3 ++- .../providence-analytics/src/program/core/QueryService.js | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.changeset/sweet-seals-fold.md b/.changeset/sweet-seals-fold.md index 30cbe98b6..7b17a4c91 100644 --- a/.changeset/sweet-seals-fold.md +++ b/.changeset/sweet-seals-fold.md @@ -2,4 +2,5 @@ 'providence-analytics': minor --- -use globby again +- use globby again +- fix ast cache (prevent from endless expanding); expose amountOfCachedProjects diff --git a/packages-node/providence-analytics/src/program/core/QueryService.js b/packages-node/providence-analytics/src/program/core/QueryService.js index 008a1f741..53042d1f8 100644 --- a/packages-node/providence-analytics/src/program/core/QueryService.js +++ b/packages-node/providence-analytics/src/program/core/QueryService.js @@ -146,12 +146,12 @@ export class QueryService { } // In order to prevent running out of memory, there is a limit to the number of // project ASTs in cache. For a session running multiple analyzers for reference - // and target projects, we need this number to be at least 2. - if (astProjectsDataCache.size >= 2) { - astProjectsDataCache.delete(astProjectsDataCache.keys()[0]); + if (astProjectsDataCache.size >= this.amountOfCachedProjects) { + astProjectsDataCache.delete(astProjectsDataCache.keys().next().value); } astProjectsDataCache.set(pathAndRequiredAst, astData); } } QueryService.cacheDisabled = false; +QueryService.amountOfCachedProjects = 2; QueryService.addAstToProjectsData = memoize(QueryService.addAstToProjectsData);