From 2231be694862b7254edfc765a86a09d2656b541d Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Thu, 25 Apr 2024 18:51:54 +0200 Subject: [PATCH] module: skip NODE_COMPILE_CACHE when policy is enabled It might be worth designing a policy for the compilation cache. For now, just skip the cache when policy is enabled. PR-URL: https://github.com/nodejs/node/pull/52577 Reviewed-By: Benjamin Gruenbaum Reviewed-By: Richard Lau Reviewed-By: Chengzhong Wu --- src/env.cc | 6 ++++ test/parallel/test-compile-cache-policy.js | 38 ++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 test/parallel/test-compile-cache-policy.js diff --git a/src/env.cc b/src/env.cc index b8574fcfb775b8..642a7d4a9d2559 100644 --- a/src/env.cc +++ b/src/env.cc @@ -1096,6 +1096,12 @@ void Environment::InitializeCompileCache() { dir_from_env.empty()) { return; } + if (!options()->experimental_policy.empty()) { + Debug(this, + DebugCategory::COMPILE_CACHE, + "[compile cache] skipping cache because policy is enabled"); + return; + } auto handler = std::make_unique(this); if (handler->InitializeDirectory(this, dir_from_env)) { compile_cache_handler_ = std::move(handler); diff --git a/test/parallel/test-compile-cache-policy.js b/test/parallel/test-compile-cache-policy.js new file mode 100644 index 00000000000000..fd6fe36bcc0cd9 --- /dev/null +++ b/test/parallel/test-compile-cache-policy.js @@ -0,0 +1,38 @@ +'use strict'; + +// This tests NODE_COMPILE_CACHE is disabled when policy is used. + +const common = require('../common'); +if (!common.hasCrypto) + common.skip('missing crypto'); + +const { spawnSyncAndAssert } = require('../common/child_process'); +const assert = require('assert'); +const fs = require('fs'); +const tmpdir = require('../common/tmpdir'); +const fixtures = require('../common/fixtures'); + +{ + tmpdir.refresh(); + const dir = tmpdir.resolve('.compile_cache_dir'); + const script = fixtures.path('policy', 'parent.js'); + const policy = fixtures.path( + 'policy', + 'dependencies', + 'dependencies-redirect-policy.json'); + spawnSyncAndAssert( + process.execPath, + ['--experimental-policy', policy, script], + { + env: { + ...process.env, + NODE_DEBUG_NATIVE: 'COMPILE_CACHE', + NODE_COMPILE_CACHE: dir + }, + cwd: tmpdir.path + }, + { + stderr: /skipping cache because policy is enabled/ + }); + assert(!fs.existsSync(dir)); +}