D8094: tags: show how hg behaves if a tags cache entry is truncated

valentin.gatienbaron (Valentin Gatien-Baron) phabricator at mercurial-scm.org
Fri Feb 7 21:35:15 UTC 2020


valentin.gatienbaron created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

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

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D8094

AFFECTED FILES
  tests/test-tags.t

CHANGE DETAILS

diff --git a/tests/test-tags.t b/tests/test-tags.t
--- a/tests/test-tags.t
+++ b/tests/test-tags.t
@@ -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 at 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
 



To: valentin.gatienbaron, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list