changeset 44337:89d44cfcdeeb

tags: show how hg behaves if a tags cache entry is truncated I'm seeing an error of this form in production on the order of once a month. I'm not sure how it happens, but I suspect interrupting a pull might result in half written cache entries. Differential Revision: https://phab.mercurial-scm.org/D8094
author Valentin Gatien-Baron <vgatien-baron@janestreet.com>
date Fri, 07 Feb 2020 15:55:26 -0500
parents d8b53385b1bc
children f5a7cf0adb12
files tests/test-tags.t
diffstat 1 files changed, 20 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/tests/test-tags.t	Fri Feb 07 13:54:09 2020 -0500
+++ b/tests/test-tags.t	Fri Feb 07 15:55:26 2020 -0500
@@ -371,6 +371,26 @@
   1970/01/01 00:00:00 bob @8dbfe60eff306a54259cfe007db9e330e7ecf866 (5000)> tags exited 0 after * seconds (glob)
   1970/01/01 00:00:00 bob @8dbfe60eff306a54259cfe007db9e330e7ecf866 (5000)> blackbox -l 6
 
+Junk data + missing cache entries results in hg further corrupting the
+cache, then failing.
+
+  $ rm -f .hg/cache/tags2-visible
+  $ truncate .hg/cache/hgtagsfnodes1 -s -10
+  $ hg debugtagscache | tail -2
+  4 0c192d7d5e6b78a714de54a2e9627952a877e25a 0c04f2a8af31de17fab7422878ee5a2dadbc943d
+  5 8dbfe60eff306a54259cfe007db9e330e7ecf866 0c04f2a8af31de17fab7ffffffffffffffffffff
+  $ hg tags
+  abort: data/.hgtags.i@0c04f2a8af31: no match found!
+  [255]
+  $ hg debugtagscache | tail -2
+  4 0c192d7d5e6b78a714de54a2e9627952a877e25a 0c04f2a8af31de17fab7422878ee5a2dadbc943d
+  5 8dbfe60eff306a54259cfe007db9e330e7ecf866 0c04f2a8af31de17fab7ffffffffffffffffffff
+# fix up the cache
+  $ rm .hg/cache/hgtagsfnodes1
+  $ hg tags -q
+  tip
+  bar
+
 #if unix-permissions no-root
 Errors writing to .hgtags fnodes cache are silently ignored