From daa292e2305f88dbcb0bec9853b90fe5eff40576 Mon Sep 17 00:00:00 2001 From: Priec Date: Sat, 5 Sep 2026 01:06:43 +0200 Subject: [PATCH] correctness on search-server1 --- client-gui2 | 2 +- search/src/lib.rs | 25 ++++++++++--------------- server | 2 +- 3 files changed, 12 insertions(+), 17 deletions(-) diff --git a/client-gui2 b/client-gui2 index bcd89bc6..4611db6c 160000 --- a/client-gui2 +++ b/client-gui2 @@ -1 +1 @@ -Subproject commit bcd89bc6412f208ee7a7a1f6b13c780353833d48 +Subproject commit 4611db6c6cd4a182a07343919f6890dca153f36e diff --git a/search/src/lib.rs b/search/src/lib.rs index a29ce542..6cfaf527 100644 --- a/search/src/lib.rs +++ b/search/src/lib.rs @@ -160,12 +160,16 @@ impl SearcherService { } } - pub fn invalidate_profile(&self, profile_name: &str) -> Result<(), Status> { - self.profiles + pub fn replace_profile_index( + &self, + profile_name: &str, + replace: impl FnOnce() -> anyhow::Result<()>, + ) -> anyhow::Result<()> { + let mut profiles = self.profiles .lock() - .map_err(|_| Status::internal("Profile index cache lock poisoned"))? - .remove(profile_name); - Ok(()) + .map_err(|_| anyhow::anyhow!("Profile index cache lock poisoned"))?; + profiles.remove(profile_name); + replace() } async fn run_rpc( @@ -721,22 +725,13 @@ fn profile_index( profile_name: &str, path: &Path, ) -> Result, Status> { - { - let cache_guard = cache - .lock() - .map_err(|_| Status::internal("Profile index cache lock poisoned"))?; - if let Some(index) = cache_guard.get(profile_name) { - return Ok(index.clone()); - } - } - - let opened = Arc::new(ProfileIndex::open(path)?); let mut cache_guard = cache .lock() .map_err(|_| Status::internal("Profile index cache lock poisoned"))?; if let Some(index) = cache_guard.get(profile_name) { return Ok(index.clone()); } + let opened = Arc::new(ProfileIndex::open(path)?); cache_guard.insert(profile_name.to_string(), opened.clone()); Ok(opened) } diff --git a/server b/server index 5455e7cb..2cf38b68 160000 --- a/server +++ b/server @@ -1 +1 @@ -Subproject commit 5455e7cb3a7874420d1cf641f4c622b87f614451 +Subproject commit 2cf38b6882ff5dd9140c0daf85d5ee14965603ff