Show More
@@ -1769,7 +1769,7 b' def addparttagsfnodescache(repo, bundler' | |||||
1769 | for node in outgoing.ancestorsof: |
|
1769 | for node in outgoing.ancestorsof: | |
1770 | # Don't compute missing, as this may slow down serving. |
|
1770 | # Don't compute missing, as this may slow down serving. | |
1771 | fnode = cache.getfnode(node, computemissing=False) |
|
1771 | fnode = cache.getfnode(node, computemissing=False) | |
1772 |
if fnode |
|
1772 | if fnode: | |
1773 | chunks.extend([node, fnode]) |
|
1773 | chunks.extend([node, fnode]) | |
1774 |
|
1774 | |||
1775 | if chunks: |
|
1775 | if chunks: |
@@ -3868,7 +3868,13 b' def debugtagscache(ui, repo):' | |||||
3868 | for r in repo: |
|
3868 | for r in repo: | |
3869 | node = repo[r].node() |
|
3869 | node = repo[r].node() | |
3870 | tagsnode = cache.getfnode(node, computemissing=False) |
|
3870 | tagsnode = cache.getfnode(node, computemissing=False) | |
3871 | tagsnodedisplay = hex(tagsnode) if tagsnode else b'missing/invalid' |
|
3871 | if tagsnode: | |
|
3872 | tagsnodedisplay = hex(tagsnode) | |||
|
3873 | elif tagsnode is False: | |||
|
3874 | tagsnodedisplay = b'invalid' | |||
|
3875 | else: | |||
|
3876 | tagsnodedisplay = b'missing' | |||
|
3877 | ||||
3872 | ui.write(b'%d %s %s\n' % (r, hex(node), tagsnodedisplay)) |
|
3878 | ui.write(b'%d %s %s\n' % (r, hex(node), tagsnodedisplay)) | |
3873 |
|
3879 | |||
3874 |
|
3880 |
@@ -733,6 +733,7 b' class hgtagsfnodescache(object):' | |||||
733 | if rawlen < wantedlen: |
|
733 | if rawlen < wantedlen: | |
734 | if self._dirtyoffset is None: |
|
734 | if self._dirtyoffset is None: | |
735 | self._dirtyoffset = rawlen |
|
735 | self._dirtyoffset = rawlen | |
|
736 | # TODO: zero fill entire record, because it's invalid not missing? | |||
736 | self._raw.extend(b'\xff' * (wantedlen - rawlen)) |
|
737 | self._raw.extend(b'\xff' * (wantedlen - rawlen)) | |
737 |
|
738 | |||
738 | def getfnode(self, node, computemissing=True): |
|
739 | def getfnode(self, node, computemissing=True): | |
@@ -740,7 +741,8 b' class hgtagsfnodescache(object):' | |||||
740 |
|
741 | |||
741 | If the value is in the cache, the entry will be validated and returned. |
|
742 | If the value is in the cache, the entry will be validated and returned. | |
742 | Otherwise, the filenode will be computed and returned unless |
|
743 | Otherwise, the filenode will be computed and returned unless | |
743 |
"computemissing" is False |
|
744 | "computemissing" is False. In that case, None will be returned if | |
|
745 | the entry is missing or False if the entry is invalid without | |||
744 | any potentially expensive computation being performed. |
|
746 | any potentially expensive computation being performed. | |
745 |
|
747 | |||
746 | If an .hgtags does not exist at the specified revision, nullid is |
|
748 | If an .hgtags does not exist at the specified revision, nullid is | |
@@ -771,6 +773,8 b' class hgtagsfnodescache(object):' | |||||
771 | # If we get here, the entry is either missing or invalid. |
|
773 | # If we get here, the entry is either missing or invalid. | |
772 |
|
774 | |||
773 | if not computemissing: |
|
775 | if not computemissing: | |
|
776 | if record != _fnodesmissingrec: | |||
|
777 | return False | |||
774 | return None |
|
778 | return None | |
775 |
|
779 | |||
776 | fnode = None |
|
780 | fnode = None | |
@@ -788,7 +792,7 b' class hgtagsfnodescache(object):' | |||||
788 | # we cannot rely on readfast because we don't know against what |
|
792 | # we cannot rely on readfast because we don't know against what | |
789 | # parent the readfast delta is computed |
|
793 | # parent the readfast delta is computed | |
790 | p1fnode = None |
|
794 | p1fnode = None | |
791 |
if p1fnode |
|
795 | if p1fnode: | |
792 | mctx = ctx.manifestctx() |
|
796 | mctx = ctx.manifestctx() | |
793 | fnode = mctx.readfast().get(b'.hgtags') |
|
797 | fnode = mctx.readfast().get(b'.hgtags') | |
794 | if fnode is None: |
|
798 | if fnode is None: |
@@ -104,7 +104,7 b' The cache should have an empty entry for' | |||||
104 | 0010: ff ff ff ff ff ff ff ff b9 15 46 36 26 b7 b4 a7 |..........F6&...| |
|
104 | 0010: ff ff ff ff ff ff ff ff b9 15 46 36 26 b7 b4 a7 |..........F6&...| | |
105 | 0020: 73 e0 9e e3 c5 2f 51 0e 19 e0 5e 1f f9 66 d8 59 |s..../Q...^..f.Y| |
|
105 | 0020: 73 e0 9e e3 c5 2f 51 0e 19 e0 5e 1f f9 66 d8 59 |s..../Q...^..f.Y| | |
106 | $ hg debugtagscache |
|
106 | $ hg debugtagscache | |
107 |
0 acb14030fe0a21b60322c440ad2d20cf7685a376 missing |
|
107 | 0 acb14030fe0a21b60322c440ad2d20cf7685a376 missing | |
108 | 1 b9154636be938d3d431e75a7c906504a079bfe07 26b7b4a773e09ee3c52f510e19e05e1ff966d859 |
|
108 | 1 b9154636be938d3d431e75a7c906504a079bfe07 26b7b4a773e09ee3c52f510e19e05e1ff966d859 | |
109 |
|
109 | |||
110 | Repeat with cold tag cache: |
|
110 | Repeat with cold tag cache: | |
@@ -381,7 +381,7 b' On junk data + missing cache entries, hg' | |||||
381 |
|
381 | |||
382 | $ hg debugtagscache | tail -2 |
|
382 | $ hg debugtagscache | tail -2 | |
383 | 4 0c192d7d5e6b78a714de54a2e9627952a877e25a 0c04f2a8af31de17fab7422878ee5a2dadbc943d |
|
383 | 4 0c192d7d5e6b78a714de54a2e9627952a877e25a 0c04f2a8af31de17fab7422878ee5a2dadbc943d | |
384 |
5 8dbfe60eff306a54259cfe007db9e330e7ecf866 missing |
|
384 | 5 8dbfe60eff306a54259cfe007db9e330e7ecf866 missing | |
385 | $ hg tags |
|
385 | $ hg tags | |
386 | tip 5:8dbfe60eff30 |
|
386 | tip 5:8dbfe60eff30 | |
387 | bar 1:78391a272241 |
|
387 | bar 1:78391a272241 | |
@@ -389,6 +389,34 b' On junk data + missing cache entries, hg' | |||||
389 | 4 0c192d7d5e6b78a714de54a2e9627952a877e25a 0c04f2a8af31de17fab7422878ee5a2dadbc943d |
|
389 | 4 0c192d7d5e6b78a714de54a2e9627952a877e25a 0c04f2a8af31de17fab7422878ee5a2dadbc943d | |
390 | 5 8dbfe60eff306a54259cfe007db9e330e7ecf866 0c04f2a8af31de17fab7422878ee5a2dadbc943d |
|
390 | 5 8dbfe60eff306a54259cfe007db9e330e7ecf866 0c04f2a8af31de17fab7422878ee5a2dadbc943d | |
391 |
|
391 | |||
|
392 | If the 4 bytes of node hash for a record don't match an existing node, the entry | |||
|
393 | is flagged as invalid. | |||
|
394 | ||||
|
395 | >>> import os | |||
|
396 | >>> with open(".hg/cache/hgtagsfnodes1", "rb+") as fp: | |||
|
397 | ... fp.seek(-24, os.SEEK_END) and None | |||
|
398 | ... fp.write(b'\xde\xad') and None | |||
|
399 | ||||
|
400 | $ f --size --hexdump .hg/cache/hgtagsfnodes1 | |||
|
401 | .hg/cache/hgtagsfnodes1: size=144 | |||
|
402 | 0000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| | |||
|
403 | 0010: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| | |||
|
404 | 0020: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| | |||
|
405 | 0030: 7a 94 12 77 0c 04 f2 a8 af 31 de 17 fa b7 42 28 |z..w.....1....B(| | |||
|
406 | 0040: 78 ee 5a 2d ad bc 94 3d 6f a4 50 21 7d 3b 71 8c |x.Z-...=o.P!};q.| | |||
|
407 | 0050: 96 4e f3 7b 89 e5 50 eb da fd 57 89 e7 6c e1 b0 |.N.{..P...W..l..| | |||
|
408 | 0060: 0c 19 2d 7d 0c 04 f2 a8 af 31 de 17 fa b7 42 28 |..-}.....1....B(| | |||
|
409 | 0070: 78 ee 5a 2d ad bc 94 3d de ad e6 0e 0c 04 f2 a8 |x.Z-...=........| | |||
|
410 | 0080: af 31 de 17 fa b7 42 28 78 ee 5a 2d ad bc 94 3d |.1....B(x.Z-...=| | |||
|
411 | ||||
|
412 | $ hg debugtagscache | tail -2 | |||
|
413 | 4 0c192d7d5e6b78a714de54a2e9627952a877e25a 0c04f2a8af31de17fab7422878ee5a2dadbc943d | |||
|
414 | 5 8dbfe60eff306a54259cfe007db9e330e7ecf866 invalid | |||
|
415 | ||||
|
416 | $ hg tags | |||
|
417 | tip 5:8dbfe60eff30 | |||
|
418 | bar 1:78391a272241 | |||
|
419 | ||||
392 |
|
|
420 | #if unix-permissions no-root | |
393 | Errors writing to .hgtags fnodes cache are silently ignored |
|
421 | Errors writing to .hgtags fnodes cache are silently ignored | |
394 |
|
422 | |||
@@ -405,7 +433,7 b' Errors writing to .hgtags fnodes cache a' | |||||
405 | $ hg blackbox -l 6 |
|
433 | $ hg blackbox -l 6 | |
406 | 1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> tags |
|
434 | 1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> tags | |
407 |
1970/ |
|
435 | 1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> couldn't write cache/hgtagsfnodes1: [Errno *] * (glob) | |
408 |
1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> |
|
436 | 1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> 2/4 cache hits/lookups in * seconds (glob) | |
409 | 1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> writing .hg/cache/tags2-visible with 1 tags |
|
437 | 1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> writing .hg/cache/tags2-visible with 1 tags | |
410 | 1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> tags exited 0 after * seconds (glob) |
|
438 | 1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> tags exited 0 after * seconds (glob) | |
411 | 1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> blackbox -l 6 |
|
439 | 1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> blackbox -l 6 | |
@@ -420,7 +448,7 b' Errors writing to .hgtags fnodes cache a' | |||||
420 | $ hg blackbox -l 6 |
|
448 | $ hg blackbox -l 6 | |
421 | 1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> tags |
|
449 | 1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> tags | |
422 | 1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> writing 24 bytes to cache/hgtagsfnodes1 |
|
450 | 1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> writing 24 bytes to cache/hgtagsfnodes1 | |
423 |
1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> |
|
451 | 1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> 2/4 cache hits/lookups in * seconds (glob) | |
424 | 1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> writing .hg/cache/tags2-visible with 1 tags |
|
452 | 1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> writing .hg/cache/tags2-visible with 1 tags | |
425 | 1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> tags exited 0 after * seconds (glob) |
|
453 | 1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> tags exited 0 after * seconds (glob) | |
426 | 1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> blackbox -l 6 |
|
454 | 1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> blackbox -l 6 |
General Comments 0
You need to be logged in to leave comments.
Login now