3421: RB Tools cannot create a review request for a changeset that belongs to a discarded review request

sarar******@gmai***** (Google Code) (Is this you? Claim this profile.)
What version are you running?
RB 2.0.2 RBTools 0.6

What's the URL of the page containing the problem?

What steps will reproduce the problem?
1.rbt post tip
2.discard request via web site
3.rbt post tip

What is the expected output? What do you see instead?

I expect to see a new review request created for tip. Instead, I get the following error (output with -d option, some info removed for brevity and privacy). In summary,  "Error creating review request: Review request with this commit ID already exists in the repository. (HTTP 409, API Error 227)". Note that there is an additional bug here where the tool tries to execute 'hg svn info' which I can't find any documentation for, so I'm assuming it either doesn't exist or is obsolete.

>>> RBTools 0.6
>>> Python 2.7.5 (default, Feb 19 2014, 13:47:28) 
[GCC 4.8.2 20131212 (Red Hat 4.8.2-7)]
>>> Running on Linux-3.14.6-200.fc20.x86_64-x86_64-with-fedora-20-Heisenbug
>>> Home = /home/serayburn
>>> Current directory = /home/serayburn/work/CCpipelineTracking
>>> Checking for a Subversion repository...
>>> Unable to execute "svn help": skipping SVN
>>> Checking for a Git repository...
>>> Running: git rev-parse --git-dir
>>> Command exited with rc 128: ['git', 'rev-parse', '--git-dir']
fatal: Not a git repository (or any parent up to mount point /home)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
>>> Checking for a Mercurial repository...
>>> Running: hg root
>>> Running: hg showconfig
>>> Running: hg svn info
>>> Command exited with rc 255: ['hg', 'svn', 'info']
hg: unknown command 'svn'
Mercurial Distributed SCM

basic commands:

 add           add the specified files on the next commit
 annotate, blame
               show changeset information by line for each file
 clone         make a copy of an existing repository
 commit, ci    commit the specified files or all outstanding changes
 diff          diff repository (or selected files)
 export        dump the header and diffs for one or more changesets
 forget        forget the specified files on the next commit
 init          create a new repository in the given directory
 log, history  show revision history of entire repository or files
 merge         merge working directory with another revision
 pull          pull changes from the specified source
 push          push changes to the specified destination
 qdiff         diff of the current patch and subsequent modifications
 qinit         init a new queue repository (DEPRECATED)
 qnew          create a new patch
 qpop          pop the current patch off the stack
 qpush         push the next patch onto the stack
 qrefresh      update the current patch
 remove, rm    remove the specified files on the next commit
 serve         start stand-alone webserver
 status, st    show changed files in the working directory
 summary, sum  summarize working directory state
 update, up, checkout, co
               update working directory (or switch revisions)
 view          start interactive history viewer

global options:

 -R --repository REPO   repository root directory or name of overlay bundle
    --cwd DIR           change working directory
 -y --noninteractive    do not prompt, automatically pick the first choice for
                        all prompts
 -q --quiet             suppress output
 -v --verbose           enable additional output
    --config CONFIG [+] set/override config option (use 'section.name=value')
    --debug             enable debugging output
    --debugger          start debugger
    --encoding ENCODE   set the charset encoding (default: ascii)
    --encodingmode MODE set the charset encoding mode (default: strict)
    --traceback         always print a traceback on exception
    --time              time how long the command takes
    --profile           print command execution profile
    --version           output version information and exit
 -h --help              display help and exit
    --hidden            consider hidden changesets
    --color TYPE        when to colorize (boolean, always, auto, or never)
                        (default: auto)
    --pager TYPE        when to paginate (boolean, always, auto, or never)
                        (default: auto)

[+] marked option can be specified multiple times

use "hg help" for the full list of commands
>>> Using candidate path 'default': 'ssh://***'
>>> repository info: Path: ssh://***/CCpipelineTracking, Base path: , Supports changesets: False
>>> Making HTTP GET request to http://reviewboard.cctechnol.com/api/
>>> Running: hg parents --hidden -r 0
>>> Running: hg identify -i --hidden -r tip --config extensions.rbtoolsnormalize=/usr/lib/python2.7/site-packages/rbtools/helpers/hgext.py
>>> Running: hg parents --hidden -r 3080b235fb9d --template {node|short} --config extensions.rbtoolsnormalize=/usr/lib/python2.7/site-packages/rbtools/helpers/hgext.py
>>> Running: hg -q outgoing --template {rev}\t{node|short}\t{branch}\n default -r 4609a3e8a074
>>> Found outgoing changeset 208:12fe037e3135
>>> 53 outgoing changesets between remote and base.
>>> Running: hg parents --hidden -r 12fe037e3135 --template {node|short} --config extensions.rbtoolsnormalize=/usr/lib/python2.7/site-packages/rbtools/helpers/hgext.py
>>> Identified b615be7a05be as parent base
>>> Running: hg diff --hidden -r 4609a3e8a074 -r 3080b235fb9d --config extensions.rbtoolsnormalize=/usr/lib/python2.7/site-packages/rbtools/helpers/hgext.py
>>> Running: hg diff --hidden -r b615be7a05be -r 4609a3e8a074 --config extensions.rbtoolsnormalize=/usr/lib/python2.7/site-packages/rbtools/helpers/hgext.py
>>> Running: hg log --hidden -r 4609a3e8a074::3080b235fb9d --template {desc}fcc37236-f58e-11e3-b62c-5c260a04037a --config extensions.rbtoolsnormalize=/usr/lib/python2.7/site-packages/rbtools/helpers/hgext.py
>>> Making HTTP GET request to http://reviewboard.cctechnol.com/api/review-requests/
>>> Making HTTP POST request to http://reviewboard.cctechnol.com/api/review-requests/
>>> Got API Error 227 (HTTP code 409): Review request with this commit ID already exists in the repository.
>>> Error data: {u'stat': u'fail', u'err': {u'msg': u'Review request with this commit ID already exists in the repository.', u'code': 227}}
Traceback (most recent call last):
  File "/usr/bin/rbt", line 9, in <module>
    load_entry_point('RBTools==0.6', 'console_scripts', 'rbt')()
  File "/usr/lib/python2.7/site-packages/rbtools/commands/main.py", line 134, in main
    command.run_from_argv([RB_MAIN, command_name] + args)
  File "/usr/lib/python2.7/site-packages/rbtools/commands/__init__.py", line 422, in run_from_argv
    exit_code = self.main(*args) or 0
  File "/usr/lib/python2.7/site-packages/rbtools/commands/post.py", line 769, in main
  File "/usr/lib/python2.7/site-packages/rbtools/commands/post.py", line 503, in post_request
    raise CommandError("Error creating review request: %s" % e)
rbtools.commands.CommandError: Error creating review request: Review request with this commit ID already exists in the repository. (HTTP 409, API Error 227)

What operating system are you using? What browser?
Fedora 20, Firefox 29.0.1

Please provide any additional information below.
#1 chipx86
This is a known issue, since review requests are now tied to commit IDs. You'll need to re-open the discarded review request and post to that one. We'll probably want to have RBTools prompt the user and do this for them.

Regarding 'hg svn', that's an extension to Mercurial that does exist. That warning should only appear in debug mode.
  • +Confirmed
  • +Component-RBTools
#2 chipx86
  • +Project-RBTools
#3 tien*****@gmai***** (Google Code) (Is this you? Claim this profile.)
is this bug still valid?

I tried to reproduce it, doing:

vim test
git add test
git commit
rbt post -> review request id 126
(discard the review request via the command line)
rbt post -> review request id 127

seems to work fine.

I did notice that after reopening the review request, the "View Diff" button seems to have disappeared
#4 david
  • -reviewboard
  • -Project:RBTools