Closed Bug 1164249 Opened 10 years ago Closed 6 years ago

Pushes colliding with review-ids from closed requests fail badly

Categories

(MozReview Graveyard :: General, defect, P2)

Production
defect

Tracking

(Not tracked)

RESOLVED INVALID

People

(Reporter: dustin, Unassigned)

Details

When pushing a single draft change, for which I have not ever created a request (I just created it with hg commit --amend), dustin@euclid ~/code/moz/t/m-c $ hg push -r . review pushing to ssh://reviewboard-hg.mozilla.org/gecko searching for changes remote: adding changesets remote: adding manifests remote: adding file changes remote: added 1 changesets with 0 changes to 10 files (+1 heads) remote: Trying to insert into pushlog. remote: Inserted into the pushlog db successfully. submitting 1 changesets for review remote: ** Unknown exception encountered with possibly-broken third-party extension hgwebjson remote: ** which supports versions unknown of Mercurial. remote: ** Please disable hgwebjson and try your action again. remote: ** If that fixes the bug please report it to the extension author. remote: ** Python 2.6.6 (r266:84292, Nov 21 2013, 10:50:32) [GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] remote: ** Mercurial Distributed SCM (version 3.3.3+5-612ed41ae359) remote: ** Extensions loaded: hgwebjson, pushlog-feed, buglink, pushlog, serverlog, rbserver remote: Traceback (most recent call last): remote: File "/usr/bin/hg", line 43, in <module> remote: mercurial.dispatch.run() remote: File "/usr/lib64/python2.6/site-packages/mercurial/dispatch.py", line 28, in run remote: sys.exit((dispatch(request(sys.argv[1:])) or 0) & 255) remote: File "/usr/lib64/python2.6/site-packages/mercurial/dispatch.py", line 71, in dispatch remote: ret = _runcatch(req) remote: File "/usr/lib64/python2.6/site-packages/mercurial/dispatch.py", line 140, in _runcatch remote: return _dispatch(req) remote: File "/usr/lib64/python2.6/site-packages/mercurial/dispatch.py", line 863, in _dispatch remote: cmdpats, cmdoptions) remote: File "/usr/lib64/python2.6/site-packages/mercurial/dispatch.py", line 624, in runcommand remote: ret = _runcommand(ui, options, cmd, d) remote: File "/usr/lib64/python2.6/site-packages/mercurial/dispatch.py", line 954, in _runcommand remote: return checkargs() remote: File "/usr/lib64/python2.6/site-packages/mercurial/dispatch.py", line 925, in checkargs remote: return cmdfunc() remote: File "/usr/lib64/python2.6/site-packages/mercurial/dispatch.py", line 860, in <lambda> remote: d = lambda: util.checksignature(func)(ui, *args, **cmdoptions) remote: File "/usr/lib64/python2.6/site-packages/mercurial/util.py", line 711, in check remote: return func(*args, **kwargs) remote: File "/usr/lib64/python2.6/site-packages/mercurial/commands.py", line 5534, in serve remote: s.serve_forever() remote: File "/repo/hg/version-control-tools/hgext/serverlog/__init__.py", line 332, in serve_forever remote: return super(sshserverwrapped, self).serve_forever() remote: File "/usr/lib64/python2.6/site-packages/mercurial/sshserver.py", line 94, in serve_forever remote: while self.serve_one(): remote: File "/repo/hg/version-control-tools/hgext/serverlog/__init__.py", line 361, in serve_one remote: return super(sshserverwrapped, self).serve_one() remote: File "/usr/lib64/python2.6/site-packages/mercurial/sshserver.py", line 112, in serve_one remote: rsp = wireproto.dispatch(self.repo, self, cmd) remote: File "/repo/hg/version-control-tools/hgext/serverlog/__init__.py", line 353, in dispatch remote: return origdispatch(repo, proto, cmd) remote: File "/usr/lib64/python2.6/site-packages/mercurial/wireproto.py", line 509, in dispatch remote: return func(repo, proto, *args) remote: File "/repo/hg/version-control-tools/hgext/reviewboard/hgrb/proto.py", line 271, in reviewboard remote: cookie=bzcookie) remote: File "/repo/hg/version-control-tools/hgext/reviewboard/hgrb/proto.py", line 53, in post_reviews remote: return pr(*args, **kwargs) remote: File "/repo/hg/version-control-tools/pylib/reviewboardmods/reviewboardmods/pushhooks.py", line 124, in post_reviews remote: return _post_reviews(root, repoid, identifier, commits) remote: File "/repo/hg/version-control-tools/pylib/reviewboardmods/reviewboardmods/pushhooks.py", line 151, in _post_reviews remote: "repository": repoid, remote: File "/usr/lib/python2.6/site-packages/rbtools/api/resource.py", line 130, in <lambda> remote: meth(resource, **kwargs))) remote: File "/usr/lib/python2.6/site-packages/rbtools/api/decorators.py", line 24, in request_method remote: *args, **kwargs) remote: File "/usr/lib/python2.6/site-packages/rbtools/api/transport/sync.py", line 61, in execute_request_method remote: return self._execute_request(request) remote: File "/usr/lib/python2.6/site-packages/rbtools/api/transport/sync.py", line 70, in _execute_request remote: rsp = self.server.make_request(request) remote: File "/usr/lib/python2.6/site-packages/rbtools/api/request.py", line 484, in make_request remote: self.process_error(e.code, e.read()) remote: File "/usr/lib/python2.6/site-packages/rbtools/api/request.py", line 457, in process_error remote: rsp['err']['msg']) remote: rbtools.api.errors.APIError: The commit ID specified has already been used. (HTTP 409, API Error 204) abort: unexpected response: empty string Not sure why hgwebjson's getting blamed, nor which commit ID it's complaining about.
Component: Extensions: MozReview → MozReview
Product: bugzilla.mozilla.org → Developer Services
Assuming Greg is correct about which changesets were being posted, this is happening because you're colliding with the request you made previously[1]. You are limited to a single parent review request per bug, per repository atm. [1] https://reviewboard.mozilla.org/r/8147/
Oh, indeed. So, how do I make more changes on the same bug?
(In reply to Dustin J. Mitchell [:dustin] from comment #3) > Oh, indeed. > > So, how do I make more changes on the same bug? You should re-open the review request I linked and continue updating it for new work. This will not delete any of your old review comments etc. but it will possibly move things around making them harder to find. The other option is just make a new (maybe dependent or blocking) bug and do the work in there. Both these options are pretty crappy and improvements are in the works.
We should really be displaying a better error message (or maybe doing something intelligent like re-opening the review request) when this case is hit. Fixing this would mean adding a 'status=all' argument to our search for existent requests matching the review-id[1]. This should make the API also return closed requests matching our query. We should then check if the request we get back is closed and act accordingly. [1] https://hg.mozilla.org/hgcustom/version-control-tools/file/35943d03d552/pylib/reviewboardmods/reviewboardmods/pushhooks.py#l138
Priority: -- → P2
Summary: Pushes to gecko review fail → Pushes colliding with review-ids from closed requests fail badly
Product: Developer Services → MozReview
MozReview is now obsolete. Please use Phabricator instead. Closing this bug.
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → INVALID
You need to log in before you can comment on or make changes to this bug.