From fb7e22de94ab949e53ae0ef78e986799b91d2637 Mon Sep 17 00:00:00 2001 From: Karthik Nadig Date: Mon, 19 Jan 2026 22:05:42 -0800 Subject: [PATCH] Refactor symlink handling in CacheEntryImpl to improve thread safety and clarity --- crates/pet-python-utils/src/cache.rs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/crates/pet-python-utils/src/cache.rs b/crates/pet-python-utils/src/cache.rs index e0575a86..849d8bc5 100644 --- a/crates/pet-python-utils/src/cache.rs +++ b/crates/pet-python-utils/src/cache.rs @@ -153,10 +153,11 @@ impl CacheEntry for CacheEntryImpl { } if let Some(ref cache_directory) = self.cache_directory { - let (env, symlinks) = get_cache_from_file(cache_directory, &self.executable)?; + let (env, mut symlinks) = get_cache_from_file(cache_directory, &self.executable)?; self.envoronment.lock().unwrap().replace(env.clone()); - self.symlinks.lock().unwrap().clear(); - self.symlinks.lock().unwrap().append(&mut symlinks.clone()); + let mut locked_symlinks = self.symlinks.lock().unwrap(); + locked_symlinks.clear(); + locked_symlinks.append(&mut symlinks); Some(env) } else { None @@ -180,8 +181,11 @@ impl CacheEntry for CacheEntryImpl { symlinks.sort(); symlinks.dedup(); - self.symlinks.lock().unwrap().clear(); - self.symlinks.lock().unwrap().append(&mut symlinks.clone()); + { + let mut locked_symlinks = self.symlinks.lock().unwrap(); + locked_symlinks.clear(); + locked_symlinks.append(&mut symlinks.clone()); + } self.envoronment .lock() .unwrap()