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/state/read.rs | |
| parent | d668ce2ff8f308e54c1c7a2c145cb3479cab899d (diff) | |
unify lock logic
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; } } |
