changeset 51426:def497c75351

rust: disable the RustIndex without persistent nodemap See rational inline.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Fri, 23 Feb 2024 03:45:07 +0100
parents d361d7bfb7dc
children bc88aa7472de
files mercurial/revlog.py tests/test-verify.t
diffstat 2 files changed, 10 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/revlog.py	Fri Feb 23 03:44:56 2024 +0100
+++ b/mercurial/revlog.py	Fri Feb 23 03:45:07 2024 +0100
@@ -1678,14 +1678,15 @@
         )
 
         use_rust_index = False
-        if rustrevlog is not None:
-            if self._nodemap_file is not None:
-                use_rust_index = True
-            else:
-                # Using the CIndex is not longer possible, as the
-                # `AncestorsIterator` and `LazyAncestors` classes now require
-                # a Rust index for instantiation.
-                use_rust_index = True
+        if rustrevlog is not None and self._nodemap_file is not None:
+            # we would like to use the rust_index in all case, especially
+            # because it is necessary for AncestorsIterator and LazyAncestors
+            # since the 6.7 cycle.
+            #
+            # However, the performance impact of inconditionnaly building the
+            # nodemap is currently a problem for non-persistent nodemap
+            # repository.
+            use_rust_index = True
 
         self._parse_index = parse_index_v1
         if self._format_version == REVLOGV0:
--- a/tests/test-verify.t	Fri Feb 23 03:44:56 2024 +0100
+++ b/tests/test-verify.t	Fri Feb 23 03:45:07 2024 +0100
@@ -311,8 +311,7 @@
   $ cat start b > .hg/store/data/a.i
 
   $ hg verify -q
-   a@1: broken revlog! (index a is corrupted) (no-rust !)
-   a@1: broken revlog! (abort: unexpected inline revlog length) (rust !)
+   a@1: broken revlog! (index a is corrupted)
   warning: orphan data file 'data/a.i'
   not checking dirstate because of previous errors
   1 warnings encountered!