diff tests/test-fncache.t @ 42715:f59f8a5e9096 stable

fncache: make debugrebuildfncache not fail on broken fncache The code reading the fncache changed in 5.0, to complain if the file is not \n terminated. This makes apparent the fact that the fncache gets corrupted. Make it possible to recover, instead of having `hg debugrebuildfncache` failing by saying `(run hg debugrebuildfncache)`. The corruption itself is most likely due to hg not using fsync in general, and so various bad things can happen. Here, the reported problems happened when running out of disk space. So I suspect that because the fncache is much bigger than the average commit/pull, when running out of disk space, the bulk of the pull may succeed, but the new fncache may get half-written and still renamed into place. Differential Revision: https://phab.mercurial-scm.org/D6722
author Valentin Gatien-Baron <vgatien-baron@janestreet.com>
date Mon, 12 Aug 2019 14:00:19 -0400
parents 6b71334f2540
children 7a4e1d245f19
line wrap: on
line diff
--- a/tests/test-fncache.t	Mon Aug 12 13:22:27 2019 -0400
+++ b/tests/test-fncache.t	Mon Aug 12 14:00:19 2019 -0400
@@ -435,16 +435,18 @@
   data/.bar.i
   data/foo.i
 
-debugrebuildfncache fails to recover from truncated line in fncache
+debugrebuildfncache recovers from truncated line in fncache
 
   $ printf a > .hg/store/fncache
   $ hg debugrebuildfncache
-  abort: fncache does not ends with a newline
-  (use 'hg debugrebuildfncache' to rebuild the fncache)
-  [255]
+  fncache does not ends with a newline
+  adding data/.bar.i
+  adding data/foo.i
+  2 items added, 0 removed from fncache
 
   $ cat .hg/store/fncache | sort
-  a
+  data/.bar.i
+  data/foo.i
 
   $ cd ..