diff mercurial/revlog.py @ 44363:671f9479af0e

nodemap: provide the on disk data to indexes who support it Time to start defining the API and prepare the rust index support. We provide a method to do so. We use a distinct method instead of passing them in the constructor because we will need this method anyway later (to refresh the mmap once we update the data on disk). Differential Revision: https://phab.mercurial-scm.org/D7847
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Wed, 15 Jan 2020 15:49:16 +0100
parents 6f9e8e142cea
children 76a96e3a2bbb
line wrap: on
line diff
--- a/mercurial/revlog.py	Wed Jan 15 15:49:06 2020 +0100
+++ b/mercurial/revlog.py	Wed Jan 15 15:49:16 2020 +0100
@@ -626,6 +626,16 @@
             self._io = rustrevlogio()
         try:
             d = self._io.parseindex(indexdata, self._inline)
+            index, _chunkcache = d
+            use_nodemap = (
+                not self._inline
+                and self.nodemap_file is not None
+                and util.safehasattr(index, 'update_nodemap_data')
+            )
+            if use_nodemap:
+                nodemap_data = nodemaputil.persisted_data(self)
+                if nodemap_data is not None:
+                    index.update_nodemap_data(nodemap_data)
         except (ValueError, IndexError):
             raise error.RevlogError(
                 _(b"index %s is corrupted") % self.indexfile