summaryrefslogtreecommitdiff
path: root/cli/factory.rs
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2024-05-16 00:09:35 -0700
committerGitHub <noreply@github.com>2024-05-16 07:09:35 +0000
commit88983fb3eb5a085f7d358a7a98d5c738a21b5d27 (patch)
treed4d83c5bd668edc25d30616fd4a3decc1cea3fb9 /cli/factory.rs
parentbba553bea5938932518dc6382e464968ce8374b4 (diff)
fix(node): seperate worker module cache (#23634)
Construct a new module graph container for workers instead of sharing it with the main worker. Fixes #17248 Fixes #23461 --------- Co-authored-by: David Sherret <dsherret@gmail.com>
Diffstat (limited to 'cli/factory.rs')
-rw-r--r--cli/factory.rs48
1 files changed, 24 insertions, 24 deletions
diff --git a/cli/factory.rs b/cli/factory.rs
index 074eaa1e4..8a9d20970 100644
--- a/cli/factory.rs
+++ b/cli/factory.rs
@@ -21,9 +21,9 @@ use crate::cache::NodeAnalysisCache;
use crate::cache::ParsedSourceCache;
use crate::emit::Emitter;
use crate::file_fetcher::FileFetcher;
+use crate::graph_container::MainModuleGraphContainer;
use crate::graph_util::FileWatcherReporter;
use crate::graph_util::ModuleGraphBuilder;
-use crate::graph_util::ModuleGraphContainer;
use crate::graph_util::ModuleGraphCreator;
use crate::http_util::HttpClient;
use crate::module_loader::CliModuleLoaderFactory;
@@ -60,7 +60,6 @@ use deno_core::futures::FutureExt;
use deno_core::parking_lot::Mutex;
use deno_core::FeatureChecker;
-use deno_graph::GraphKind;
use deno_lockfile::WorkspaceMemberConfig;
use deno_runtime::deno_fs;
use deno_runtime::deno_node::analyze::NodeCodeTranslator;
@@ -157,7 +156,7 @@ struct CliFactoryServices {
emit_cache: Deferred<EmitCache>,
emitter: Deferred<Arc<Emitter>>,
fs: Deferred<Arc<dyn deno_fs::FileSystem>>,
- graph_container: Deferred<Arc<ModuleGraphContainer>>,
+ main_graph_container: Deferred<Arc<MainModuleGraphContainer>>,
lockfile: Deferred<Option<Arc<Mutex<Lockfile>>>>,
maybe_import_map: Deferred<Option<Arc<ImportMap>>>,
maybe_inspector_server: Deferred<Option<Arc<InspectorServer>>>,
@@ -673,17 +672,19 @@ impl CliFactory {
.await
}
- pub fn graph_container(&self) -> &Arc<ModuleGraphContainer> {
- self.services.graph_container.get_or_init(|| {
- let graph_kind = match self.options.sub_command() {
- // todo(dsherret): ideally the graph container would not be used
- // for deno cache because it doesn't dynamically load modules
- DenoSubcommand::Cache(_) => GraphKind::All,
- DenoSubcommand::Check(_) => GraphKind::TypesOnly,
- _ => self.options.type_check_mode().as_graph_kind(),
- };
- Arc::new(ModuleGraphContainer::new(graph_kind))
- })
+ pub async fn main_module_graph_container(
+ &self,
+ ) -> Result<&Arc<MainModuleGraphContainer>, AnyError> {
+ self
+ .services
+ .main_graph_container
+ .get_or_try_init_async(async {
+ Ok(Arc::new(MainModuleGraphContainer::new(
+ self.cli_options().clone(),
+ self.module_load_preparer().await?.clone(),
+ )))
+ })
+ .await
}
pub fn maybe_inspector_server(
@@ -706,7 +707,6 @@ impl CliFactory {
.get_or_try_init_async(async {
Ok(Arc::new(ModuleLoadPreparer::new(
self.options.clone(),
- self.graph_container().clone(),
self.maybe_lockfile().clone(),
self.module_graph_builder().await?.clone(),
self.text_only_progress_bar().clone(),
@@ -791,11 +791,15 @@ impl CliFactory {
self.blob_store().clone(),
Box::new(CliModuleLoaderFactory::new(
&self.options,
+ if self.options.code_cache_enabled() {
+ Some(self.code_cache()?.clone())
+ } else {
+ None
+ },
self.emitter()?.clone(),
- self.graph_container().clone(),
+ self.main_module_graph_container().await?.clone(),
+ self.module_info_cache()?.clone(),
self.module_load_preparer().await?.clone(),
- self.parsed_source_cache().clone(),
- self.resolver().await?.clone(),
cli_node_resolver.clone(),
NpmModuleLoader::new(
self.cjs_resolutions().clone(),
@@ -803,12 +807,8 @@ impl CliFactory {
fs.clone(),
cli_node_resolver.clone(),
),
- if self.options.code_cache_enabled() {
- Some(self.code_cache()?.clone())
- } else {
- None
- },
- self.module_info_cache()?.clone(),
+ self.parsed_source_cache().clone(),
+ self.resolver().await?.clone(),
)),
self.root_cert_store_provider().clone(),
self.fs().clone(),