changeset 38695:2cdb82e8fb44

perffncachewrite: load fncache after lock is acquired Without this patch, running perffncachewrite on a repository destroy its fncache. Lock Acquisition drops various caches, including the fncache one. Then writing of an non-loaded fncache result into an empty one.
author Boris Feld <boris.feld@octobus.net>
date Sat, 14 Jul 2018 02:09:47 +0200
parents 55101513ed94
children 89d93dd1a222
files contrib/perf.py tests/test-contrib-perf.t
diffstat 2 files changed, 6 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/contrib/perf.py	Fri Jun 22 11:02:42 2018 +0100
+++ b/contrib/perf.py	Sat Jul 14 02:09:47 2018 +0200
@@ -980,9 +980,10 @@
 def perffncachewrite(ui, repo, **opts):
     timer, fm = gettimer(ui, opts)
     s = repo.store
+    lock = repo.lock()
     s.fncache._load()
-    lock = repo.lock()
     tr = repo.transaction('perffncachewrite')
+    tr.addbackup('fncache')
     def d():
         s.fncache._dirty = True
         s.fncache.write(tr)
--- a/tests/test-contrib-perf.t	Fri Jun 22 11:02:42 2018 +0100
+++ b/tests/test-contrib-perf.t	Sat Jul 14 02:09:47 2018 +0200
@@ -146,7 +146,11 @@
 #if repofncache
   $ hg perffncacheencode
   $ hg perffncacheload
+  $ hg debugrebuildfncache
+  fncache already up to date
   $ hg perffncachewrite
+  $ hg debugrebuildfncache
+  fncache already up to date
 #endif
   $ hg perfheads
   $ hg perfindex