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.
--- 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