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/state/read.rs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'src/state/read.rs') diff --git a/src/state/read.rs b/src/state/read.rs index b76582c..f8323a2 100644 --- a/src/state/read.rs +++ b/src/state/read.rs @@ -6,6 +6,7 @@ use automerge::{AutoCommit, ChangeHash}; use super::AppState; use crate::document::replica::Epoch; +use crate::locks::RwLockExt; /// A read-only view of the document the node served before it started rejoining. pub(crate) struct StaleView { @@ -46,8 +47,7 @@ impl AppState { let stale = self .stale - .read() - .unwrap_or_else(|poisoned| poisoned.into_inner()) + .read_or_recover() .as_ref() .map(|view| (view.epoch, Arc::clone(&view.doc))); let Some((epoch, doc)) = stale else { @@ -92,9 +92,6 @@ impl AppState { } pub(super) fn set_stale(&self, view: Option) { - *self - .stale - .write() - .unwrap_or_else(|poisoned| poisoned.into_inner()) = view; + *self.stale.write_or_recover() = view; } } -- cgit v1.3.1