Skip to content

Commit e8d5dac

Browse files
authored
Refactor symlink handling in CacheEntryImpl to improve thread safety and clarity (#293)
Fixes #285
1 parent 7ce33db commit e8d5dac

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

crates/pet-python-utils/src/cache.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -161,10 +161,11 @@ impl CacheEntry for CacheEntryImpl {
161161
}
162162

163163
if let Some(ref cache_directory) = self.cache_directory {
164-
let (env, symlinks) = get_cache_from_file(cache_directory, &self.executable)?;
164+
let (env, mut symlinks) = get_cache_from_file(cache_directory, &self.executable)?;
165165
self.envoronment.lock().unwrap().replace(env.clone());
166-
self.symlinks.lock().unwrap().clear();
167-
self.symlinks.lock().unwrap().append(&mut symlinks.clone());
166+
let mut locked_symlinks = self.symlinks.lock().unwrap();
167+
locked_symlinks.clear();
168+
locked_symlinks.append(&mut symlinks);
168169
Some(env)
169170
} else {
170171
None
@@ -188,8 +189,11 @@ impl CacheEntry for CacheEntryImpl {
188189
symlinks.sort();
189190
symlinks.dedup();
190191

191-
self.symlinks.lock().unwrap().clear();
192-
self.symlinks.lock().unwrap().append(&mut symlinks.clone());
192+
{
193+
let mut locked_symlinks = self.symlinks.lock().unwrap();
194+
locked_symlinks.clear();
195+
locked_symlinks.append(&mut symlinks.clone());
196+
}
193197
self.envoronment
194198
.lock()
195199
.unwrap()

0 commit comments

Comments
 (0)