Closed Bug 1338171 Opened 8 years ago Closed 8 years ago

Fail gracefully when a push includes a commit with a bad MozReview ID

Categories

(MozReview Graveyard :: Integration: Mercurial, defect)

defect
Not set
normal

Tracking

(Not tracked)

RESOLVED WONTFIX

People

(Reporter: Sylvestre, Unassigned)

References

Details

Working on a 37 patches review: https://reviewboard.mozilla.org/r/111124/#issue-summary I fixed all the comments and tried to push but it is failing: $ hg push -r 341639:tip review pushing to https://reviewboard-hg.mozilla.org/autoreview searching for appropriate review repository redirecting push to https://reviewboard-hg.mozilla.org/gecko (adding commit id to 1 changesets) saved backup bundle to /tmp/mozilla-central/.hg/strip-backup/709c22e52baf-cd322769-addcommitid.hg warning: ignoring unknown working parent 709c22e52baf! abort: 00changelog.i@e9ae9486d463: no node! In case it was a local issue, I cloned a new repo, hg export/import all the 37 patches but experienced exactly the same issue. Using mercurial 4.0-1 from Debian repo.
Blocks: 1338086
More: some patches are lost in the process (about 6). I have to restore them with hg unbundle -u /tmp/mozilla-central/.hg/strip-backup/709c22e52baf-cd322769-addcommitid.hg
$ hg push --debug --traceback -r 341639::341675 review automatically setting Bugzilla API Key auth https://reviewboard-hg.mozilla.org pushing to https://reviewboard-hg.mozilla.org/autoreview using https://reviewboard-hg.mozilla.org/autoreview sending capabilities command using auth.autobmoapikey0.* for authentication searching for appropriate review repository sending listreviewrepos command using auth.autobmoapikey0.* for authentication redirecting push to https://reviewboard-hg.mozilla.org/gecko sending capabilities command using auth.autobmoapikey0.* for authentication capabilities: streamreqs=generaldelta,revlogv1 changegroupsubset bundle2=HG20%0Achangegroup%3D01%2C02%0Adigests%3Dmd5%2Csha1%2Csha512%0Aerror%3Dabort%2Cunsupportedcontent%2Cpushraced%2Cpushkey%0Ahgtagsfnodes%0Alistkeys%0Apushkey%0Aremote-changegroup%3Dhttp%2Chttps unbundlehash pullreviews batch mozreviewrequires=bzapikeys,commitid,jsonproto,listreviewdata,listreviewrepos,proto1 httpheader=1024 lookup pushlog pushkey known unbundle=HG10GZ,HG10BZ,HG10UN branchmap getbundle mozreview=publish,publishhttp,pullreviews,pushreview,submithttp reviewboard (adding commit id to 1 changesets) committing files: layout/style/nsCSSRuleProcessor.cpp committing manifest committing changelog committing files: js/src/perf/pm_linux.cpp js/xpconnect/loader/mozJSSubScriptLoader.cpp js/xpconnect/wrappers/XrayWrapper.cpp committing manifest committing changelog committing files: js/src/perf/pm_linux.cpp js/xpconnect/loader/mozJSSubScriptLoader.cpp js/xpconnect/wrappers/XrayWrapper.cpp committing manifest committing changelog committing files: widget/xremoteclient/XRemoteClient.cpp committing manifest committing changelog committing files: widget/xremoteclient/XRemoteClient.cpp committing manifest committing changelog committing files: dom/media/fmp4/MP4Demuxer.cpp committing manifest committing changelog committing files: dom/media/fmp4/MP4Demuxer.cpp committing manifest committing changelog committing files: dom/base/nsContentUtils.cpp dom/base/nsDOMWindowUtils.cpp dom/base/nsFrameMessageManager.cpp dom/base/nsGlobalWindow.cpp dom/base/nsImageLoadingContent.cpp dom/base/nsObjectLoadingContent.cpp committing manifest committing changelog committing files: dom/base/nsContentUtils.cpp dom/base/nsDOMWindowUtils.cpp dom/base/nsFrameMessageManager.cpp dom/base/nsGlobalWindow.cpp dom/base/nsImageLoadingContent.cpp dom/base/nsObjectLoadingContent.cpp committing manifest committing changelog committing files: media/webrtc/signaling/src/jsep/JsepSessionImpl.cpp media/webrtc/signaling/src/media-conduit/AudioConduit.cpp media/webrtc/signaling/src/media-conduit/VideoConduit.cpp media/webrtc/signaling/src/mediapipeline/MediaPipelineFilter.cpp media/webrtc/signaling/src/peerconnection/WebrtcGlobalInformation.cpp media/webrtc/signaling/src/sdp/sipcc/sdp_access.c media/webrtc/signaling/src/sdp/sipcc/sdp_attr.c media/webrtc/signaling/src/sdp/sipcc/sdp_attr_access.c media/webrtc/signaling/src/sdp/sipcc/sdp_main.c media/webrtc/signaling/src/sdp/sipcc/sdp_token.c media/webrtc/signaling/src/sdp/sipcc/sdp_utils.c committing manifest committing changelog committing files: media/webrtc/signaling/src/jsep/JsepSessionImpl.cpp media/webrtc/signaling/src/media-conduit/AudioConduit.cpp media/webrtc/signaling/src/media-conduit/VideoConduit.cpp media/webrtc/signaling/src/mediapipeline/MediaPipelineFilter.cpp media/webrtc/signaling/src/peerconnection/WebrtcGlobalInformation.cpp media/webrtc/signaling/src/sdp/sipcc/sdp_access.c media/webrtc/signaling/src/sdp/sipcc/sdp_attr.c media/webrtc/signaling/src/sdp/sipcc/sdp_attr_access.c media/webrtc/signaling/src/sdp/sipcc/sdp_main.c media/webrtc/signaling/src/sdp/sipcc/sdp_token.c media/webrtc/signaling/src/sdp/sipcc/sdp_utils.c committing manifest committing changelog resolving manifests branchmerge: False, force: True, partial: False ancestor: 709c22e52baf+, local: 709c22e52baf+, remote: 709c22e52baf 6 changesets found list of changesets: e9ae9486d4635101fe5c2efb7b4f94f0ee61dd69 3fd0ee9281e3cb1c868388aaa8b0542346ab635f 7a8555edef75d3d08d9447f2d945865d4b2baed3 255e0a0bfb0f5eb739e06157e6792aeea217e4ca ea5456f3c2b0779b8b524ab5570448e1b64f051e 709c22e52baf700c5c52d093370ee597e283970b bundle2-output-bundle: "HG20", (1 params) 1 parts total bundle2-output-part: "changegroup" (params: 1 mandatory 1 advisory) streamed payload saved backup bundle to /tmp/mozilla-central/.hg/strip-backup/709c22e52baf-cd322769-addcommitid.hg invalid branchheads cache (served): tip differs warning: ignoring unknown working parent 709c22e52baf! truncating cache/rbc-revs-v1 to 2733360 Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/mercurial/dispatch.py", line 205, in _runcatchfunc return _dispatch(req) File "/usr/lib/python2.7/dist-packages/mercurial/dispatch.py", line 901, in _dispatch cmdpats, cmdoptions) File "/usr/lib/python2.7/dist-packages/mercurial/dispatch.py", line 650, in runcommand ret = _runcommand(ui, options, cmd, d) File "/usr/lib/python2.7/dist-packages/mercurial/extensions.py", line 220, in closure return func(*(args + a), **kw) File "/usr/lib/python2.7/dist-packages/hgext/pager.py", line 160, in pagecmd return orig(ui, options, cmd, cmdfunc) File "/usr/lib/python2.7/dist-packages/mercurial/extensions.py", line 220, in closure return func(*(args + a), **kw) File "/usr/lib/python2.7/dist-packages/hgext/color.py", line 521, in colorcmd return orig(ui_, opts, cmd, cmdfunc) File "/usr/lib/python2.7/dist-packages/mercurial/dispatch.py", line 909, in _runcommand return cmdfunc() File "/usr/lib/python2.7/dist-packages/mercurial/dispatch.py", line 898, in <lambda> d = lambda: util.checksignature(func)(ui, *args, **cmdoptions) File "/usr/lib/python2.7/dist-packages/mercurial/util.py", line 1039, in check return func(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/mercurial/extensions.py", line 220, in closure return func(*(args + a), **kw) File "/usr/lib/python2.7/dist-packages/mercurial/util.py", line 1039, in check return func(*args, **kwargs) File "/home/sylvestre/.mozbuild/version-control-tools/hgext/firefoxtree/__init__.py", line 487, in pushcommand return orig(ui, repo, dest=dest, **opts) File "/usr/lib/python2.7/dist-packages/mercurial/util.py", line 1039, in check return func(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/mercurial/extensions.py", line 220, in closure return func(*(args + a), **kw) File "/usr/lib/python2.7/dist-packages/mercurial/util.py", line 1039, in check return func(*args, **kwargs) File "/home/sylvestre/.mozbuild/version-control-tools/hgext/reviewboard/client.py", line 178, in pushcommand return orig(ui, repo, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/mercurial/util.py", line 1039, in check return func(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/mercurial/extensions.py", line 220, in closure return func(*(args + a), **kw) File "/usr/lib/python2.7/dist-packages/mercurial/util.py", line 1039, in check return func(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/hgext/mq.py", line 3540, in mqcommand return orig(ui, repo, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/mercurial/util.py", line 1039, in check return func(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/mercurial/commands.py", line 6043, in push opargs=opts.get('opargs')) File "/usr/lib/python2.7/dist-packages/mercurial/extensions.py", line 220, in closure return func(*(args + a), **kw) File "/home/sylvestre/.mozbuild/version-control-tools/hgext/firefoxtree/__init__.py", line 290, in push **kwargs) File "/usr/lib/python2.7/dist-packages/mercurial/extensions.py", line 220, in closure return func(*(args + a), **kw) File "/home/sylvestre/.mozbuild/version-control-tools/hgext/reviewboard/client.py", line 255, in wrappedpush newbranch=False, **kwargs) File "/home/sylvestre/.mozbuild/version-control-tools/hgext/reviewboard/client.py", line 304, in wrappedpush **kwargs) File "/usr/lib/python2.7/dist-packages/mercurial/exchange.py", line 471, in push _pushdiscovery(pushop) File "/usr/lib/python2.7/dist-packages/mercurial/extensions.py", line 220, in closure return func(*(args + a), **kw) File "/home/sylvestre/.mozbuild/version-control-tools/hgext/reviewboard/client.py", line 452, in wrappedpushdiscovery impactedrevs = list(repo.revs('%ln::', nodes)) File "/usr/lib/python2.7/dist-packages/mercurial/localrepo.py", line 576, in revs return m(self) File "/usr/lib/python2.7/dist-packages/mercurial/revset.py", line 2749, in mfunc result = getset(repo, subset, tree) File "/usr/lib/python2.7/dist-packages/mercurial/revset.py", line 335, in getset s = methods[x[0]](repo, subset, *x[1:]) File "/usr/lib/python2.7/dist-packages/mercurial/revset.py", line 443, in func return fn(repo, subset, b) File "/usr/lib/python2.7/dist-packages/mercurial/revset.py", line 847, in descendants return _descendants(repo, subset, x) File "/usr/lib/python2.7/dist-packages/mercurial/revset.py", line 825, in _descendants roots = getset(repo, fullreposet(repo), x) File "/usr/lib/python2.7/dist-packages/mercurial/revset.py", line 335, in getset s = methods[x[0]](repo, subset, *x[1:]) File "/usr/lib/python2.7/dist-packages/mercurial/revset.py", line 442, in func return fn(repo, subset, b, order) File "/usr/lib/python2.7/dist-packages/mercurial/revset.py", line 2338, in _hexlist return _orderedhexlist(repo, subset, x) File "/usr/lib/python2.7/dist-packages/mercurial/revset.py", line 2327, in _orderedhexlist ls = [cl.rev(node.bin(r)) for r in s.split('\0')] File "/usr/lib/python2.7/dist-packages/mercurial/changelog.py", line 335, in rev r = super(changelog, self).rev(node) File "/usr/lib/python2.7/dist-packages/mercurial/revlog.py", line 367, in rev raise LookupError(node, self.indexfile, _('no node')) LookupError: 00changelog.i@e9ae9486d463: no node abort: 00changelog.i@e9ae9486d463: no node!
So, I tried with evolve. I had a different issue (probably caused by the same thing) Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/mercurial/dispatch.py", line 205, in _runcatchfunc return _dispatch(req) File "/usr/lib/python2.7/dist-packages/mercurial/dispatch.py", line 901, in _dispatch cmdpats, cmdoptions) File "/usr/lib/python2.7/dist-packages/mercurial/dispatch.py", line 650, in runcommand ret = _runcommand(ui, options, cmd, d) File "/usr/lib/python2.7/dist-packages/mercurial/extensions.py", line 220, in closure return func(*(args + a), **kw) File "/usr/lib/python2.7/dist-packages/hgext/pager.py", line 160, in pagecmd return orig(ui, options, cmd, cmdfunc) File "/usr/lib/python2.7/dist-packages/mercurial/extensions.py", line 220, in closure return func(*(args + a), **kw) File "/usr/lib/python2.7/dist-packages/hgext/color.py", line 521, in colorcmd return orig(ui_, opts, cmd, cmdfunc) File "/usr/lib/python2.7/dist-packages/mercurial/dispatch.py", line 909, in _runcommand return cmdfunc() File "/usr/lib/python2.7/dist-packages/mercurial/dispatch.py", line 898, in <lambda> d = lambda: util.checksignature(func)(ui, *args, **cmdoptions) File "/usr/lib/python2.7/dist-packages/mercurial/util.py", line 1039, in check return func(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/mercurial/extensions.py", line 220, in closure return func(*(args + a), **kw) File "/usr/lib/python2.7/dist-packages/mercurial/util.py", line 1039, in check return func(*args, **kwargs) File "/home/sylvestre/.mozbuild/version-control-tools/hgext/firefoxtree/__init__.py", line 491, in pushcommand return orig(ui, repo, dest=dest, **opts) File "/usr/lib/python2.7/dist-packages/mercurial/util.py", line 1039, in check return func(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/mercurial/extensions.py", line 220, in closure return func(*(args + a), **kw) File "/usr/lib/python2.7/dist-packages/mercurial/util.py", line 1039, in check return func(*args, **kwargs) File "/home/sylvestre/.mozbuild/version-control-tools/hgext/reviewboard/client.py", line 178, in pushcommand return orig(ui, repo, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/mercurial/util.py", line 1039, in check return func(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/mercurial/extensions.py", line 220, in closure return func(*(args + a), **kw) File "/usr/lib/python2.7/dist-packages/mercurial/util.py", line 1039, in check return func(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/hgext/mq.py", line 3540, in mqcommand return orig(ui, repo, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/mercurial/util.py", line 1039, in check return func(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/mercurial/extensions.py", line 220, in closure return func(*(args + a), **kw) File "/usr/lib/python2.7/dist-packages/mercurial/util.py", line 1039, in check return func(*args, **kwargs) File "/home/sylvestre/dev/mozilla/evolve/hgext/evolve.py", line 732, in warnobserrors ret = orig(ui, repo, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/mercurial/util.py", line 1039, in check return func(*args, **kwargs) File "/usr/lib/python2.7/dist-packages/mercurial/commands.py", line 6043, in push opargs=opts.get('opargs')) File "/usr/lib/python2.7/dist-packages/mercurial/extensions.py", line 220, in closure return func(*(args + a), **kw) File "/home/sylvestre/.mozbuild/version-control-tools/hgext/firefoxtree/__init__.py", line 294, in push **kwargs) File "/usr/lib/python2.7/dist-packages/mercurial/extensions.py", line 220, in closure return func(*(args + a), **kw) File "/home/sylvestre/.mozbuild/version-control-tools/hgext/reviewboard/client.py", line 255, in wrappedpush newbranch=False, **kwargs) File "/home/sylvestre/.mozbuild/version-control-tools/hgext/reviewboard/client.py", line 304, in wrappedpush **kwargs) File "/usr/lib/python2.7/dist-packages/mercurial/extensions.py", line 220, in closure return func(*(args + a), **kw) File "/home/sylvestre/dev/mozilla/evolve/hgext/evolve.py", line 755, in push return orig(repo, *args, **opts) File "/usr/lib/python2.7/dist-packages/mercurial/exchange.py", line 471, in push _pushdiscovery(pushop) File "/usr/lib/python2.7/dist-packages/mercurial/extensions.py", line 220, in closure return func(*(args + a), **kw) File "/home/sylvestre/.mozbuild/version-control-tools/hgext/reviewboard/client.py", line 433, in wrappedpushdiscovery backuptopic='addcommitid') File "/home/sylvestre/.mozbuild/version-control-tools/pylib/mozhg/mozhg/rewrite.py", line 288, in replacechangesets obsolete.createmarkers(repo, markers) File "/usr/lib/python2.7/dist-packages/mercurial/obsolete.py", line 1247, in createmarkers % prec) Abort: changeset e85764d30144 cannot obsolete itself Thanks to the help of Julien Cristau, we discovered that the commit id was the following: MozReview-Commit-ID: 9s4z7bYXisU *** modif haycam which was the source of the issue. Mercurial should probably
Finishing my sentence: Mercurial should probably detect when "MozReview-Commit-ID:" is badly formatted and display a proper error message
This bug is entirely just about the MozReview-Commit-ID being badly formatted, correct?
Summary: hg push review fails with "abort: 00changelog.i@e9ae9486d463: no node!" → Fail gracefully when a push includes a commit with a bad MozReview ID
Yeah, sorry, I should have retitled it!
Flags: needinfo?(gps)
I set needinfo with the intent of looking at this. Given the uncertain future of this code since it is MozReview specific, this bug is possibly a WONTFIX at this stage. I'm not sure what we're doing with the open bugs. Whatever is happening, it is low priority for me. The bug is likely in pylib/mozhg/mozhg/rewrite.py or in the code that calls it.
Flags: needinfo?(gps)
Agreed!
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.