diff options
Diffstat (limited to 'src/state/read.rs')
| -rw-r--r-- | src/state/read.rs | 9 |
1 files changed, 3 insertions, 6 deletions
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<StaleView>) { - *self - .stale - .write() - .unwrap_or_else(|poisoned| poisoned.into_inner()) = view; + *self.stale.write_or_recover() = view; } } |
