From 7b7dcb5a77061cb69d368de263a02b5ad26fbf51 Mon Sep 17 00:00:00 2001 From: tv Date: Mon, 26 Oct 2026 04:20:52 +0100 Subject: unify lock logic --- src/swarm/blob.rs | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) (limited to 'src/swarm/blob.rs') diff --git a/src/swarm/blob.rs b/src/swarm/blob.rs index 42cfbf3..58522fa 100644 --- a/src/swarm/blob.rs +++ b/src/swarm/blob.rs @@ -29,6 +29,7 @@ use tokio::sync::{Semaphore, mpsc}; use tokio::time::Instant; use tracing::{debug, info, warn}; +use crate::locks::MutexExt; use crate::state::AppState; use crate::transport::{BlobBody, BlobId, BlobMessage, ParsedMessage}; @@ -80,25 +81,19 @@ impl Blobs { fn fetches( &self, ) -> MutexGuard<'_, HashMap>> { - self.fetches - .lock() - .unwrap_or_else(|poisoned| poisoned.into_inner()) + self.fetches.lock_or_recover() } fn cached(&self, id: BlobId) -> Option> { self.cache - .lock() - .unwrap_or_else(|poisoned| poisoned.into_inner()) + .lock_or_recover() .as_ref() .filter(|(cached, _)| *cached == id) .map(|(_, prepared)| Arc::clone(prepared)) } fn remember(&self, id: BlobId, prepared: Arc) { - *self - .cache - .lock() - .unwrap_or_else(|poisoned| poisoned.into_inner()) = Some((id, prepared)); + *self.cache.lock_or_recover() = Some((id, prepared)); } } -- cgit v1.3.1