Commit daad3aace94 by Pierre-Yves David

nodemap: only use persistent nodemap for non-inlined revlog

Revlog are inlined while they are small (to avoid having too many file to deal
with). The persistent nodemap will only provides a significant boost for large
enough revlog index. So it does not make sens to add an extra file to store
nodemap for small revlog.

We could consider inclining the nodemap data inside the revlog itself, but the
benefit is unclear so let it be an adventure for another time.

Differential Revision: https://phab.mercurial-scm.org/D7837
parent 6c07480d665
......@@ -1965,6 +1965,7 @@ class revlog(object):
# manager
tr.replace(self.indexfile, trindex * self._io.size)
nodemaputil.setup_persistent_nodemap(tr, self)
self._chunkclear()
def _nodeduplicatecallback(self, transaction, node):
......
......@@ -34,6 +34,8 @@ def setup_persistent_nodemap(tr, revlog):
(only actually persist the nodemap if this is relevant for this revlog)
"""
if revlog._inline:
return # inlined revlog are too small for this to be relevant
if revlog.nodemap_file is None:
return # we do not use persistent_nodemap on this revlog
callback_id = b"revlog-persistent-nodemap-%s" % revlog.nodemap_file
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment