changeset 52845:c72d8df0c080

rust-pyo3-revlog: clear_cache
author Rapha?l Gom?s <rgomes@octobus.net>
date Sun, 05 Jan 2025 23:20:01 +0100
parents 9e6b50837b37
children b7dd7af61488
files rust/hg-pyo3/src/revlog/mod.rs
diffstat 1 files changed, 13 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/rust/hg-pyo3/src/revlog/mod.rs	Fri Jan 03 15:45:06 2025 +0100
+++ b/rust/hg-pyo3/src/revlog/mod.rs	Sun Jan 05 23:20:01 2025 +0100
@@ -381,6 +381,19 @@
         })
     }
 
+    fn clear_cache(slf: &Bound<'_, Self>) -> PyResult<PyObject> {
+        assert!(!Self::is_delaying(slf)?);
+        let mut self_ref = slf.borrow_mut();
+        self_ref.revision_cache.take();
+        self_ref.nodemap_queries.store(0, Ordering::Relaxed);
+        drop(self_ref);
+
+        Self::with_core_write(slf, |_self_ref, mut irl| {
+            irl.clear_cache();
+            Ok(slf.py().None())
+        })
+    }
+
     fn issnapshot(slf: &Bound<'_, Self>, rev: PyRevision) -> PyResult<bool> {
         Self::_index_issnapshot(slf, rev)
     }