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 <benjamingr@gmail.com>
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
This commit is contained in:
Joyee Cheung
2024-04-25 18:51:54 +02:00
committed by GitHub
parent c29d53c5cf
commit 2231be6948
2 changed files with 44 additions and 0 deletions

View File

@@ -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<CompileCacheHandler>(this);
if (handler->InitializeDirectory(this, dir_from_env)) {
compile_cache_handler_ = std::move(handler);

View File

@@ -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));
}