summaryrefslogtreecommitdiffstats
path: root/src/state/read.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/state/read.rs')
-rw-r--r--src/state/read.rs9
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;
}
}