diff options
| author | tv <tv@krebsco.de> | 2026-10-26 04:20:52 +0100 |
|---|---|---|
| committer | tv <tv@krebsco.de> | 2026-10-26 04:20:52 +0100 |
| commit | 7b7dcb5a77061cb69d368de263a02b5ad26fbf51 (patch) | |
| tree | d3255ce629cb60059cb55191dc206d0f64ca645e /src/swarm/blob.rs | |
| parent | d668ce2ff8f308e54c1c7a2c145cb3479cab899d (diff) | |
unify lock logic
Diffstat (limited to 'src/swarm/blob.rs')
| -rw-r--r-- | src/swarm/blob.rs | 13 |
1 files changed, 4 insertions, 9 deletions
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<BlobId, mpsc::UnboundedSender<(String, BlobBody)>>> { - self.fetches - .lock() - .unwrap_or_else(|poisoned| poisoned.into_inner()) + self.fetches.lock_or_recover() } fn cached(&self, id: BlobId) -> Option<Arc<Prepared>> { 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<Prepared>) { - *self - .cache - .lock() - .unwrap_or_else(|poisoned| poisoned.into_inner()) = Some((id, prepared)); + *self.cache.lock_or_recover() = Some((id, prepared)); } } |
