Re: 'IntegrityError: Duplicate entry' when using RB 2.0RC2, 'rbt post' in git repo

2014-04-18 Thread Christian Hammond
Hi Bruce,

Yeah, this is due to the new commit ID field. We associate the commit ID
with a review request and treat it like Perforce change numbers, where
there's a one-to-one mapping of review request and commit. This is crucial
for a number of features we have planned for improved DVCS support.

It *should* update a review request if the commit ID matches, rather than
breaking, though.

I'd like to get a better understanding for why you'd want to create two
review requests from the same commit?

Christian

-- 
Christian Hammond - chip...@chipx86.com
Review Board - http://www.reviewboard.org
Beanbag, Inc. - http://www.beanbaginc.com


On Thu, Apr 17, 2014 at 8:08 PM, Bruce Cran bruce.c...@gmail.com wrote:

 I've checked and this appears to be a regression from at least 1.7.9. It
 used to be possible to run the same 'rbt post' command in a git repo twice
 and end up with two reviews.

 --
 Bruce


 On Thu, Apr 17, 2014 at 8:34 PM, Bruce Cran bruce.c...@gmail.com wrote:

 I've been setting up Review Board 2.0 RC2, and found I got an HTTP 500
 error with an IntegrityError when trying for a second time to post a review
 from a git repository using 'rbt post'.

 The first time, I'd forgotten to set the Mirror Path in the repository
 configuration, so i got:

 ERROR: Error uploading diff

 One or more fields had errors (HTTP 400, API Error 105)

 path: fatal: Not a git repository: 'None'


 Your review request still exists, but the diff is not attached.

 So I fixed the configuration and ran the command again, but this time got
 an HTTP 500 error, with the following traceback in reviewboard.log:

 (1062, Duplicate entry '4fb8f4f5a58a4dab066544a650ccc145268b-98' for
 key 'reviews_reviewrequest_b8c24015')
 Traceback (most recent call last):
   File
 /usr/local/lib/python2.7/dist-packages/Django-1.6.2-py2.7.egg/django/core/handlers/base.py,
 line 114, in get_response
 response = wrapped_callback(request, *callback_args,
 **callback_kwargs)
   File
 /usr/local/lib/python2.7/dist-packages/Django-1.6.2-py2.7.egg/django/views/decorators/cache.py,
 line 52, in _wrapped_view_func
 response = view_func(request, *args, **kwargs)
   File
 /usr/local/lib/python2.7/dist-packages/Django-1.6.2-py2.7.egg/django/views/decorators/vary.py,
 line 19, in inner_func
 response = func(*args, **kwargs)
   File
 /usr/local/lib/python2.7/dist-packages/Djblets-0.8rc1-py2.7.egg/djblets/webapi/resources.py,
 line 451, in __call__
 result = view(request, api_format=api_format, *args, **kwargs)
   File
 /usr/local/lib/python2.7/dist-packages/Djblets-0.8rc1-py2.7.egg/djblets/webapi/resources.py,
 line 669, in post
 return self.create(*args, **kwargs)
   File
 /usr/local/lib/python2.7/dist-packages/Djblets-0.8rc1-py2.7.egg/djblets/webapi/decorators.py,
 line 115, in _call
 return view_func(*args, **kwargs)
   File
 /usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0rc2-py2.7.egg/reviewboard/webapi/decorators.py,
 line 110, in _check
 return view_func(*args, **kwargs)
   File
 /usr/local/lib/python2.7/dist-packages/Djblets-0.8rc1-py2.7.egg/djblets/webapi/decorators.py,
 line 115, in _call
 return view_func(*args, **kwargs)
   File
 /usr/local/lib/python2.7/dist-packages/Djblets-0.8rc1-py2.7.egg/djblets/webapi/decorators.py,
 line 136, in _checklogin
 return view_func(*args, **kwargs)
   File
 /usr/local/lib/python2.7/dist-packages/Djblets-0.8rc1-py2.7.egg/djblets/webapi/decorators.py,
 line 115, in _call
 return view_func(*args, **kwargs)
   File
 /usr/local/lib/python2.7/dist-packages/Djblets-0.8rc1-py2.7.egg/djblets/webapi/decorators.py,
 line 115, in _call
 return view_func(*args, **kwargs)
   File
 /usr/local/lib/python2.7/dist-packages/Djblets-0.8rc1-py2.7.egg/djblets/webapi/decorators.py,
 line 285, in _validate
 return view_func(*args, **new_kwargs)
   File
 /usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0rc2-py2.7.egg/reviewboard/webapi/resources/review_request.py,
 line 561, in create
 create_from_commit_id=create_from_commit_id)
   File
 /usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0rc2-py2.7.egg/reviewboard/reviews/managers.py,
 line 139, in create
 review_request.save()
   File
 /usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0rc2-py2.7.egg/reviewboard/reviews/models/review_request.py,
 line 561, in save
 super(ReviewRequest, self).save(**kwargs)
   File
 /usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0rc2-py2.7.egg/reviewboard/reviews/models/base_review_request_details.py,
 line 256, in save
 super(BaseReviewRequestDetails, self).save(**kwargs)
   File
 /usr/local/lib/python2.7/dist-packages/Django-1.6.2-py2.7.egg/django/db/models/base.py,
 line 545, in save
 force_update=force_update, update_fields=update_fields)
   File
 /usr/local/lib/python2.7/dist-packages/Django-1.6.2-py2.7.egg/django/db/models/base.py,
 line 573, in save_base
 updated = self._save_table(raw, cls, force_insert, force_update,
 using, 

Re: 'IntegrityError: Duplicate entry' when using RB 2.0RC2, 'rbt post' in git repo

2014-04-18 Thread Bruce Cran
I can't actually think of why someone might want to create two reviews from
the same commit.

-- 
Bruce

-- 
Get the Review Board Power Pack at http://www.reviewboard.org/powerpack/
---
Sign up for Review Board hosting at RBCommons: https://rbcommons.com/
---
Happy user? Let us know at http://www.reviewboard.org/users/
--- 
You received this message because you are subscribed to the Google Groups 
reviewboard group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to reviewboard+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


'IntegrityError: Duplicate entry' when using RB 2.0RC2, 'rbt post' in git repo

2014-04-17 Thread Bruce Cran
I've been setting up Review Board 2.0 RC2, and found I got an HTTP 500
error with an IntegrityError when trying for a second time to post a review
from a git repository using 'rbt post'.

The first time, I'd forgotten to set the Mirror Path in the repository
configuration, so i got:

ERROR: Error uploading diff

One or more fields had errors (HTTP 400, API Error 105)

path: fatal: Not a git repository: 'None'


Your review request still exists, but the diff is not attached.

So I fixed the configuration and ran the command again, but this time got
an HTTP 500 error, with the following traceback in reviewboard.log:

(1062, Duplicate entry '4fb8f4f5a58a4dab066544a650ccc145268b-98' for
key 'reviews_reviewrequest_b8c24015')
Traceback (most recent call last):
  File
/usr/local/lib/python2.7/dist-packages/Django-1.6.2-py2.7.egg/django/core/handlers/base.py,
line 114, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File
/usr/local/lib/python2.7/dist-packages/Django-1.6.2-py2.7.egg/django/views/decorators/cache.py,
line 52, in _wrapped_view_func
response = view_func(request, *args, **kwargs)
  File
/usr/local/lib/python2.7/dist-packages/Django-1.6.2-py2.7.egg/django/views/decorators/vary.py,
line 19, in inner_func
response = func(*args, **kwargs)
  File
/usr/local/lib/python2.7/dist-packages/Djblets-0.8rc1-py2.7.egg/djblets/webapi/resources.py,
line 451, in __call__
result = view(request, api_format=api_format, *args, **kwargs)
  File
/usr/local/lib/python2.7/dist-packages/Djblets-0.8rc1-py2.7.egg/djblets/webapi/resources.py,
line 669, in post
return self.create(*args, **kwargs)
  File
/usr/local/lib/python2.7/dist-packages/Djblets-0.8rc1-py2.7.egg/djblets/webapi/decorators.py,
line 115, in _call
return view_func(*args, **kwargs)
  File
/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0rc2-py2.7.egg/reviewboard/webapi/decorators.py,
line 110, in _check
return view_func(*args, **kwargs)
  File
/usr/local/lib/python2.7/dist-packages/Djblets-0.8rc1-py2.7.egg/djblets/webapi/decorators.py,
line 115, in _call
return view_func(*args, **kwargs)
  File
/usr/local/lib/python2.7/dist-packages/Djblets-0.8rc1-py2.7.egg/djblets/webapi/decorators.py,
line 136, in _checklogin
return view_func(*args, **kwargs)
  File
/usr/local/lib/python2.7/dist-packages/Djblets-0.8rc1-py2.7.egg/djblets/webapi/decorators.py,
line 115, in _call
return view_func(*args, **kwargs)
  File
/usr/local/lib/python2.7/dist-packages/Djblets-0.8rc1-py2.7.egg/djblets/webapi/decorators.py,
line 115, in _call
return view_func(*args, **kwargs)
  File
/usr/local/lib/python2.7/dist-packages/Djblets-0.8rc1-py2.7.egg/djblets/webapi/decorators.py,
line 285, in _validate
return view_func(*args, **new_kwargs)
  File
/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0rc2-py2.7.egg/reviewboard/webapi/resources/review_request.py,
line 561, in create
create_from_commit_id=create_from_commit_id)
  File
/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0rc2-py2.7.egg/reviewboard/reviews/managers.py,
line 139, in create
review_request.save()
  File
/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0rc2-py2.7.egg/reviewboard/reviews/models/review_request.py,
line 561, in save
super(ReviewRequest, self).save(**kwargs)
  File
/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0rc2-py2.7.egg/reviewboard/reviews/models/base_review_request_details.py,
line 256, in save
super(BaseReviewRequestDetails, self).save(**kwargs)
  File
/usr/local/lib/python2.7/dist-packages/Django-1.6.2-py2.7.egg/django/db/models/base.py,
line 545, in save
force_update=force_update, update_fields=update_fields)
  File
/usr/local/lib/python2.7/dist-packages/Django-1.6.2-py2.7.egg/django/db/models/base.py,
line 573, in save_base
updated = self._save_table(raw, cls, force_insert, force_update, using,
update_fields)
  File
/usr/local/lib/python2.7/dist-packages/Django-1.6.2-py2.7.egg/django/db/models/base.py,
line 635, in _save_table
forced_update)
  File
/usr/local/lib/python2.7/dist-packages/Django-1.6.2-py2.7.egg/django/db/models/base.py,
line 679, in _do_update
return filtered._update(values)  0
  File
/usr/local/lib/python2.7/dist-packages/Django-1.6.2-py2.7.egg/django/db/models/query.py,
line 507, in _update
return query.get_compiler(self.db).execute_sql(None)
  File
/usr/local/lib/python2.7/dist-packages/Django-1.6.2-py2.7.egg/django/db/models/sql/compiler.py,
line 976, in execute_sql
cursor = super(SQLUpdateCompiler, self).execute_sql(result_type)
  File
/usr/local/lib/python2.7/dist-packages/Django-1.6.2-py2.7.egg/django/db/models/sql/compiler.py,
line 782, in execute_sql
cursor.execute(sql, params)
  File
/usr/local/lib/python2.7/dist-packages/Django-1.6.2-py2.7.egg/django/db/backends/util.py,
line 53, in execute
return self.cursor.execute(sql, params)
  File

Re: 'IntegrityError: Duplicate entry' when using RB 2.0RC2, 'rbt post' in git repo

2014-04-17 Thread Bruce Cran
I've checked and this appears to be a regression from at least 1.7.9. It
used to be possible to run the same 'rbt post' command in a git repo twice
and end up with two reviews.

-- 
Bruce


On Thu, Apr 17, 2014 at 8:34 PM, Bruce Cran bruce.c...@gmail.com wrote:

 I've been setting up Review Board 2.0 RC2, and found I got an HTTP 500
 error with an IntegrityError when trying for a second time to post a review
 from a git repository using 'rbt post'.

 The first time, I'd forgotten to set the Mirror Path in the repository
 configuration, so i got:

 ERROR: Error uploading diff

 One or more fields had errors (HTTP 400, API Error 105)

 path: fatal: Not a git repository: 'None'


 Your review request still exists, but the diff is not attached.

 So I fixed the configuration and ran the command again, but this time got
 an HTTP 500 error, with the following traceback in reviewboard.log:

 (1062, Duplicate entry '4fb8f4f5a58a4dab066544a650ccc145268b-98' for
 key 'reviews_reviewrequest_b8c24015')
 Traceback (most recent call last):
   File
 /usr/local/lib/python2.7/dist-packages/Django-1.6.2-py2.7.egg/django/core/handlers/base.py,
 line 114, in get_response
 response = wrapped_callback(request, *callback_args, **callback_kwargs)
   File
 /usr/local/lib/python2.7/dist-packages/Django-1.6.2-py2.7.egg/django/views/decorators/cache.py,
 line 52, in _wrapped_view_func
 response = view_func(request, *args, **kwargs)
   File
 /usr/local/lib/python2.7/dist-packages/Django-1.6.2-py2.7.egg/django/views/decorators/vary.py,
 line 19, in inner_func
 response = func(*args, **kwargs)
   File
 /usr/local/lib/python2.7/dist-packages/Djblets-0.8rc1-py2.7.egg/djblets/webapi/resources.py,
 line 451, in __call__
 result = view(request, api_format=api_format, *args, **kwargs)
   File
 /usr/local/lib/python2.7/dist-packages/Djblets-0.8rc1-py2.7.egg/djblets/webapi/resources.py,
 line 669, in post
 return self.create(*args, **kwargs)
   File
 /usr/local/lib/python2.7/dist-packages/Djblets-0.8rc1-py2.7.egg/djblets/webapi/decorators.py,
 line 115, in _call
 return view_func(*args, **kwargs)
   File
 /usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0rc2-py2.7.egg/reviewboard/webapi/decorators.py,
 line 110, in _check
 return view_func(*args, **kwargs)
   File
 /usr/local/lib/python2.7/dist-packages/Djblets-0.8rc1-py2.7.egg/djblets/webapi/decorators.py,
 line 115, in _call
 return view_func(*args, **kwargs)
   File
 /usr/local/lib/python2.7/dist-packages/Djblets-0.8rc1-py2.7.egg/djblets/webapi/decorators.py,
 line 136, in _checklogin
 return view_func(*args, **kwargs)
   File
 /usr/local/lib/python2.7/dist-packages/Djblets-0.8rc1-py2.7.egg/djblets/webapi/decorators.py,
 line 115, in _call
 return view_func(*args, **kwargs)
   File
 /usr/local/lib/python2.7/dist-packages/Djblets-0.8rc1-py2.7.egg/djblets/webapi/decorators.py,
 line 115, in _call
 return view_func(*args, **kwargs)
   File
 /usr/local/lib/python2.7/dist-packages/Djblets-0.8rc1-py2.7.egg/djblets/webapi/decorators.py,
 line 285, in _validate
 return view_func(*args, **new_kwargs)
   File
 /usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0rc2-py2.7.egg/reviewboard/webapi/resources/review_request.py,
 line 561, in create
 create_from_commit_id=create_from_commit_id)
   File
 /usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0rc2-py2.7.egg/reviewboard/reviews/managers.py,
 line 139, in create
 review_request.save()
   File
 /usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0rc2-py2.7.egg/reviewboard/reviews/models/review_request.py,
 line 561, in save
 super(ReviewRequest, self).save(**kwargs)
   File
 /usr/local/lib/python2.7/dist-packages/ReviewBoard-2.0rc2-py2.7.egg/reviewboard/reviews/models/base_review_request_details.py,
 line 256, in save
 super(BaseReviewRequestDetails, self).save(**kwargs)
   File
 /usr/local/lib/python2.7/dist-packages/Django-1.6.2-py2.7.egg/django/db/models/base.py,
 line 545, in save
 force_update=force_update, update_fields=update_fields)
   File
 /usr/local/lib/python2.7/dist-packages/Django-1.6.2-py2.7.egg/django/db/models/base.py,
 line 573, in save_base
 updated = self._save_table(raw, cls, force_insert, force_update,
 using, update_fields)
   File
 /usr/local/lib/python2.7/dist-packages/Django-1.6.2-py2.7.egg/django/db/models/base.py,
 line 635, in _save_table
 forced_update)
   File
 /usr/local/lib/python2.7/dist-packages/Django-1.6.2-py2.7.egg/django/db/models/base.py,
 line 679, in _do_update
 return filtered._update(values)  0
   File
 /usr/local/lib/python2.7/dist-packages/Django-1.6.2-py2.7.egg/django/db/models/query.py,
 line 507, in _update
 return query.get_compiler(self.db).execute_sql(None)
   File
 /usr/local/lib/python2.7/dist-packages/Django-1.6.2-py2.7.egg/django/db/models/sql/compiler.py,
 line 976, in execute_sql
 cursor = super(SQLUpdateCompiler, self).execute_sql(result_type)
   File