[Bug 4656] New: LookupError when calculating branch cache updates after strip
mercurial-bugs at selenic.com
mercurial-bugs at selenic.com
Fri May 8 21:09:51 UTC 2015
http://bz.selenic.com/show_bug.cgi?id=4656
Priority: normal
Bug ID: 4656
CC: mercurial-devel at selenic.com,
pierre-yves.david at ens-lyon.org
Assignee: bugzilla at selenic.com
Summary: LookupError when calculating branch cache updates
after strip
Severity: bug
Classification: Unclassified
OS: All
Reporter: gregory.szorc at gmail.com
Hardware: All
Status: UNCONFIRMED
Version: 3.4
Component: Mercurial
Product: Mercurial
I wrote some funky extension code that rewrites some changesets, rebases
childen, then strips the old commits. It works most of the time. But as part of
deploying it, I ran into a funky crash:
$ hg push -r 1 --debug --traceback
pushing to ssh://*:$HGPORT6/test-repo (glob)
running /Users/gps/src/hgcustom/version-control-tools/testing/mozreview-ssh
192.168.59.103 -p 20065 'hg -R test-repo serve --stdio'
sending hello command
sending between command
remote: 203
remote: capabilities: lookup changegroupsubset branchmap pushkey known
getbundle unbundlehash batch streamreqs=revlogv1,generaldelta
unbundle=HG10GZ,HG10BZ,HG10UN httpheader=1024 reviewboard pullreviews pushlog
remote: 1
tip: bef76c5ef027241e9682606ae723732a18e2be0f
committing files:
foo
committing manifest
committing changelog
{'o\x06\xb4\xacn\xfeyK,\xed\xa6s\xc3\x07\xe3\xce\xed\x85\xefM':
'\xf4"\x84\x1a\x13\xf8\xec\xb9\x95\x89;d\xb9\xacn\xe9\x8e\xa3\t\x94'}
stripping ['o\x06\xb4\xacn\xfeyK,\xed\xa6s\xc3\x07\xe3\xce\xed\x85\xefM']
1 changesets found
list of changesets:
6f06b4ac6efe794b2ceda673c307e3ceed85ef4d
bundling: 1/1 changesets (100.00%)
bundling: 1/1 manifests (100.00%)
bundling: foo 1/1 files (100.00%)
saved backup bundle to
$TESTTMP/client/.hg/strip-backup/6f06b4ac6efe-a579e256-replacing.hg (glob)
6 changesets found
list of changesets:
6a5e0303525672de1b4adaa85bf42601a910312d
afef2b530106d00832a59244a852230bd88a70a7
773ae5edc39985853a8f396765fd5b65e951cbc4
659bcc59ed36f1a82f17545c97d0322b16422d5b
bef76c5ef027241e9682606ae723732a18e2be0f
f422841a13f8ecb995893b64b9ac6ee98ea30994
bundling: 1/6 changesets (16.67%)
bundling: 2/6 changesets (33.33%)
bundling: 3/6 changesets (50.00%)
bundling: 4/6 changesets (66.67%)
bundling: 5/6 changesets (83.33%)
bundling: 6/6 changesets (100.00%)
bundling: 1/6 manifests (16.67%)
bundling: 2/6 manifests (33.33%)
bundling: 3/6 manifests (50.00%)
bundling: 4/6 manifests (66.67%)
bundling: 5/6 manifests (83.33%)
bundling: 6/6 manifests (100.00%)
bundling: foo 1/1 files (100.00%)
adding branch
adding changesets
changesets: 1 chunks
add changeset 6a5e03035256
changesets: 2 chunks
add changeset afef2b530106
changesets: 3 chunks
add changeset 773ae5edc399
changesets: 4 chunks
add changeset 659bcc59ed36
changesets: 5 chunks
add changeset bef76c5ef027
changesets: 6 chunks
add changeset f422841a13f8
adding manifests
manifests: 1/6 chunks (16.67%)
manifests: 2/6 chunks (33.33%)
manifests: 3/6 chunks (50.00%)
manifests: 4/6 chunks (66.67%)
manifests: 5/6 chunks (83.33%)
manifests: 6/6 chunks (100.00%)
adding file changes
adding foo revisions
files: 1/1 chunks (100.00%)
added 6 changesets with 6 changes to 1 files (+4 heads)
removing unknown node 6f06b4ac6efe from 1-phase boundary
invalid branchheads cache (served): tip differs
truncating cache/rbc-revs-v1 to 56
truncating cache/rbc-revs-v1 to 8
query 1; heads
sending batch command
searching for changes
all remote heads known locally
preparing listkeys for "phases"
sending listkeys command
checking for updated bookmarks
preparing listkeys for "bookmarks"
sending listkeys command
1 changesets found
list of changesets:
f422841a13f8ecb995893b64b9ac6ee98ea30994
sending unbundle command
bundling: 1/1 changesets (100.00%)
bundling: 1/1 manifests (100.00%)
bundling: foo 1/1 files (100.00%)
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: added 1 changesets with 1 changes to 1 files
remote: Trying to insert into pushlog.
remote: Inserted into the pushlog db successfully.
preparing listkeys for "phases"
sending listkeys command
preparing pushkey for "phases:3a9f6899ef84c99841f546030b036d0124a863cf"
sending pushkey command
try to push obsolete markers to remote
submitting 1 changesets for review
sending pushreview command
OrderedDict([('\xf4"\x84\x1a\x13\xf8\xec\xb9\x95\x89;d\xb9\xacn\xe9\x8e\xa3\t\x94',
'2')])
adding review metadata to 1 changesets
tip: f422841a13f8ecb995893b64b9ac6ee98ea30994
rewriting f422841a13f8ecb995893b64b9ac6ee98ea30994
committing files:
foo
committing manifest
committing changelog
{'\xf4"\x84\x1a\x13\xf8\xec\xb9\x95\x89;d\xb9\xacn\xe9\x8e\xa3\t\x94':
'\xbezG\xe82\x84\xc41\xf8\x8a\xe1P{\t\xdf_fh\xf0\x1a'}
tip: be7a47e83284c431f88ae1507b09df5f6668f01a
stripping
['\xf4"\x84\x1a\x13\xf8\xec\xb9\x95\x89;d\xb9\xacn\xe9\x8e\xa3\t\x94']
1 changesets found
list of changesets:
f422841a13f8ecb995893b64b9ac6ee98ea30994
bundling: 1/1 changesets (100.00%)
bundling: 1/1 manifests (100.00%)
bundling: foo 1/1 files (100.00%)
saved backup bundle to
$TESTTMP/client/.hg/strip-backup/f422841a13f8-dd95891a-replacing.hg (glob)
6 changesets found
list of changesets:
6a5e0303525672de1b4adaa85bf42601a910312d
afef2b530106d00832a59244a852230bd88a70a7
773ae5edc39985853a8f396765fd5b65e951cbc4
659bcc59ed36f1a82f17545c97d0322b16422d5b
bef76c5ef027241e9682606ae723732a18e2be0f
be7a47e83284c431f88ae1507b09df5f6668f01a
bundling: 1/6 changesets (16.67%)
bundling: 2/6 changesets (33.33%)
bundling: 3/6 changesets (50.00%)
bundling: 4/6 changesets (66.67%)
bundling: 5/6 changesets (83.33%)
bundling: 6/6 changesets (100.00%)
bundling: 1/6 manifests (16.67%)
bundling: 2/6 manifests (33.33%)
bundling: 3/6 manifests (50.00%)
bundling: 4/6 manifests (66.67%)
bundling: 5/6 manifests (83.33%)
bundling: 6/6 manifests (100.00%)
bundling: foo 1/1 files (100.00%)
adding branch
adding changesets
changesets: 1 chunks
add changeset 6a5e03035256
changesets: 2 chunks
add changeset afef2b530106
changesets: 3 chunks
add changeset 773ae5edc399
changesets: 4 chunks
add changeset 659bcc59ed36
changesets: 5 chunks
add changeset bef76c5ef027
changesets: 6 chunks
add changeset be7a47e83284
adding manifests
manifests: 1/1 chunks (100.00%)
manifests: 2/1 chunks (200.00%)
manifests: 3/1 chunks (300.00%)
manifests: 4/1 chunks (400.00%)
manifests: 5/1 chunks (500.00%)
manifests: 6/1 chunks (600.00%)
adding file changes
adding foo revisions
files: 1/1 chunks (100.00%)
added 1 changesets with 6 changes to 1 files (+1 heads)
invalid branchheads cache (served): tip differs
strip failed, full bundle stored in
'$TESTTMP/client/.hg/strip-backup/f422841a13f8-dd95891a-replacing.hg'
updating the branch cache
Traceback (most recent call last):
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/dispatch.py",
line 140, in _runcatch
return _dispatch(req)
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/dispatch.py",
line 863, in _dispatch
cmdpats, cmdoptions)
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/dispatch.py",
line 624, in runcommand
ret = _runcommand(ui, options, cmd, d)
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/dispatch.py",
line 954, in _runcommand
return checkargs()
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/dispatch.py",
line 925, in checkargs
return cmdfunc()
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/dispatch.py",
line 860, in <lambda>
d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/util.py",
line 711, in check
return func(*args, **kwargs)
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/extensions.py",
line 149, in wrap
util.checksignature(origfn), *args, **kwargs)
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/util.py",
line 711, in check
return func(*args, **kwargs)
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/hgext/mq.py",
line 3483, in mqcommand
return orig(ui, repo, *args, **kwargs)
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/util.py",
line 711, in check
return func(*args, **kwargs)
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/extensions.py",
line 149, in wrap
util.checksignature(origfn), *args, **kwargs)
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/util.py",
line 711, in check
return func(*args, **kwargs)
File
"/Users/gps/src/hgcustom/version-control-tools/hgext/reviewboard/client.py",
line 101, in pushcommand
return orig(ui, repo, *args, **kwargs)
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/util.py",
line 711, in check
return func(*args, **kwargs)
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/commands.py",
line 5115, in push
bookmarks=opts.get('bookmark', ()))
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/extensions.py",
line 194, in wrap
return wrapper(origfn, *args, **kwargs)
File
"/Users/gps/src/hgcustom/version-control-tools/hgext/reviewboard/client.py",
line 189, in wrappedpush
**kwargs)
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/exchange.py",
line 227, in push
_pushbookmark(pushop)
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/extensions.py",
line 194, in wrap
return wrapper(origfn, *args, **kwargs)
File
"/Users/gps/src/hgcustom/version-control-tools/hgext/reviewboard/client.py",
line 326, in wrappedpushbookmark
doreview(pushop.repo, pushop.ui, pushop.remote, pushop.reviewnodes)
File
"/Users/gps/src/hgcustom/version-control-tools/hgext/reviewboard/client.py",
line 490, in doreview
nodemap = replacechangesets(repo, rewritenodes, replacedescription)
File
"/Users/gps/src/hgcustom/version-control-tools/pylib/mozhg/mozhg/rewrite.py",
line 258, in replacechangesets
repair.strip(repo.ui, repo, stripnodes, topic=backuptopic)
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/repair.py",
line 192, in strip
True)
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/changegroup.py",
line 849, in addchangegroup
branchmap.updatecache(repo.filtered('served'))
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/branchmap.py",
line 92, in updatecache
partial = subset.branchmap().copy()
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/localrepo.py",
line 718, in branchmap
branchmap.updatecache(self)
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/branchmap.py",
line 79, in updatecache
cl = repo.changelog
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/repoview.py",
line 275, in changelog
revs = filterrevs(unfi, self.filtername)
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/repoview.py",
line 222, in filterrevs
repo.filteredrevcache[filtername] = func(repo.unfiltered())
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/repoview.py",
line 178, in computemutable
maymutable = filterrevs(repo, 'base')
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/repoview.py",
line 222, in filterrevs
repo.filteredrevcache[filtername] = func(repo.unfiltered())
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/repoview.py",
line 202, in computeimpactable
firstmutable = min(firstmutable, min(cl.rev(r) for r in roots))
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/repoview.py",
line 202, in <genexpr>
firstmutable = min(firstmutable, min(cl.rev(r) for r in roots))
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/changelog.py",
line 197, in rev
r = super(changelog, self).rev(node)
File
"/Users/gps/src/hgcustom/version-control-tools/venv/lib/python2.7/site-packages/mercurial/revlog.py",
line 321, in rev
raise LookupError(node, self.indexfile, _('no node'))
LookupError: 00changelog.i at f422841a13f8: no node
abort: 00changelog.i at f422841a13f8: no node!
transaction abort!
rollback completed
[255]
This command actually does 2 rewrites and strips:
1) Rewrite + rebase + strip before discovery
2) vanilla push code
3) Rewrite + rebase + strip in reaction to stuff that happened during push
During the 2nd set of rewrites, we get the error seen.
On IRC, marmoute appeared to immediately understand what the issue is. I'll let
him explain it in more detail because I don't understand what's going on.
I wish I had STR with vanilla Mercurial, but I don't. Sorry :/
--
You are receiving this mail because:
You are on the CC list for the bug.
More information about the Mercurial-devel
mailing list