summaryrefslogtreecommitdiff
path: root/cli/cache
diff options
context:
space:
mode:
authorNayeem Rahman <nayeemrmn99@gmail.com>2023-01-10 15:28:10 +0000
committerGitHub <noreply@github.com>2023-01-10 16:28:10 +0100
commit71ea4ef2746d7d75623a821d4832d3531a8e1654 (patch)
tree7d5d9676c5de9b32edcc2aee9a94394e4de2a19f /cli/cache
parent0329bc69dabbcc4d57ff9d34d695ffd4ddb1de4f (diff)
fix(watch): preserve `ProcState::file_fetcher` between restarts (#15466)
This commit changes "ProcState" to store "file_fetcher" field in an "Arc", allowing it to be preserved between restarts and thus keeping the state alive between the restarts. File watchers for "deno test" and "deno bench" now reset "ProcState" between restarts.
Diffstat (limited to 'cli/cache')
-rw-r--r--cli/cache/mod.rs4
-rw-r--r--cli/cache/node.rs1
-rw-r--r--cli/cache/parsed_source.rs8
3 files changed, 10 insertions, 3 deletions
diff --git a/cli/cache/mod.rs b/cli/cache/mod.rs
index d2ad1b20a..4d255b014 100644
--- a/cli/cache/mod.rs
+++ b/cli/cache/mod.rs
@@ -50,12 +50,10 @@ pub struct FetchCacher {
impl FetchCacher {
pub fn new(
emit_cache: EmitCache,
- file_fetcher: FileFetcher,
+ file_fetcher: Arc<FileFetcher>,
root_permissions: PermissionsContainer,
dynamic_permissions: PermissionsContainer,
) -> Self {
- let file_fetcher = Arc::new(file_fetcher);
-
Self {
emit_cache,
dynamic_permissions,
diff --git a/cli/cache/node.rs b/cli/cache/node.rs
index cc93f36e1..24341e1c1 100644
--- a/cli/cache/node.rs
+++ b/cli/cache/node.rs
@@ -24,6 +24,7 @@ struct CjsAnalysisData {
pub reexports: Vec<String>,
}
+#[derive(Clone)]
pub struct NodeAnalysisCache {
db_file_path: Option<PathBuf>,
inner: Arc<Mutex<Option<Option<NodeAnalysisCacheInner>>>>,
diff --git a/cli/cache/parsed_source.rs b/cli/cache/parsed_source.rs
index 9ab926874..28547dcf6 100644
--- a/cli/cache/parsed_source.rs
+++ b/cli/cache/parsed_source.rs
@@ -65,6 +65,14 @@ impl ParsedSourceCache {
}
}
+ pub fn reset_for_file_watcher(&self) -> Self {
+ Self {
+ db_cache_path: self.db_cache_path.clone(),
+ cli_version: self.cli_version.clone(),
+ sources: Default::default(),
+ }
+ }
+
pub fn get_parsed_source_from_module(
&self,
module: &deno_graph::Module,