Re: 'IntegrityError: Duplicate entry' when using RB 2.0RC2, 'rbt post' in git repo
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
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
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
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