2200: ReviewBoard cannot accept a new change from Perforce with a description with accent
- Duplicate
- Review Board
Faller******@gmai***** (Google Code) (Is this you? Claim this profile.) | |
|
|
Feb. 18, 2012 | |
What version are you running? 1.6rc2 What's the URL of the page containing the problem? private What steps will reproduce the problem? 1.Trying to post-review a change from Perforce with a description with accent 2. The posting fails with a strange error message. 3. What is the expected output? What do you see instead? A successful posting. What operating system are you using? What browser? WinXP, Firefox, Perforce Please provide any additional information below. If no accent the posting is OK. I suspect it is not a post-review problem, because the post-review posts only the change number. I suspect the perforce.py on the server side, but maybe I am wrong. Part of the output with the -d option: Microsoft Windows [Version 5.2.3790] (C) Copyright 1985-2003 Microsoft Corp. c:\GSDev\Main>post-review -d 111111 >>> RBTools 0.3.2 >>> Attempting to create review request on xx.graphisoft.hu:1666 for 236441 >>> HTTP POSTing to http://rr.graphisoft.hu/api/review-requests/: {'cha ngenum': '111111', 'repository': 'xx.graphisoft.hu:1666'} >>> Got API Error 210 (HTTP code 500): There was an error fetching extended info rmation for this repository >>> Error data: {u'stat': u'fail', u'err': {u'msg': u'There was an error fetchin g extended information for this repository', u'code': 210}} Error creating review request: There was an error fetching extended information for this repository (HTTP 500, API Error 210)
I'll need more info to diagnose this. Can you edit your reviewboard install's reviewboard/webapi/resources.py file, find the "create" function in ReviewRequestResource, and look for: except SCMError: return REPO_INFO_ERROR Change this to: except SCMError, e: logging.error("Got SCMError when creating review request: %s" % e, exc_info=1) return REPO_INFO_ERROR Then restart and try again. The log should should contain more useful information.
-
+ NeedInfo -
- Priority-Medium + Priority-High + Milestone-Release1.6.x
What I found in the log was the following, I dont know is it helps or not: Internal Server Error: /api/review-requests/ Traceback (most recent call last): File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/core/handlers/base.py", line 178, in get_response response = middleware_method(request, response) File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/middleware/http.py", line 15, in process_response response['Content-Length'] = str(len(response.content)) File "/usr/local/lib/python2.6/dist-packages/Djblets-0.6.9-py2.6.egg/djblets/webapi/core.py", line 276, in _get_content content = adapter.encode(self.api_data, request=self.request) File "/usr/local/lib/python2.6/dist-packages/Djblets-0.6.9-py2.6.egg/djblets/webapi/core.py", line 88, in encode return super(JSONEncoderAdapter, self).encode(o) File "/usr/lib/python2.6/json/encoder.py", line 367, in encode chunks = list(self.iterencode(o)) File "/usr/lib/python2.6/json/encoder.py", line 309, in _iterencode for chunk in self._iterencode_dict(o, markers): File "/usr/lib/python2.6/json/encoder.py", line 275, in _iterencode_dict for chunk in self._iterencode(value, markers): File "/usr/lib/python2.6/json/encoder.py", line 317, in _iterencode for chunk in self._iterencode_default(o, markers): File "/usr/lib/python2.6/json/encoder.py", line 309, in _iterencode for chunk in self._iterencode_dict(o, markers): File "/usr/lib/python2.6/json/encoder.py", line 275, in _iterencode_dict for chunk in self._iterencode(value, markers): File "/usr/lib/python2.6/json/encoder.py", line 294, in _iterencode yield encoder(o) UnicodeDecodeError: 'utf8' codec can't decode byte 0xf3 in position 10: invalid continuation byte
Now I am sure that there are two errors here. One with the ChangeNumberInUseError, and one with international characters in the Perforce description. Now I can reconstruct the history around this bug: - We tried to post-review a change with international characters but we failed by Unicode problems. - Then we re-try the post-review and consistently failed with the mysterious SCMError error I entered originally. - I entered the bug into the tracker. You suggested me the patch for better error reporting. I applied the patch and tried another post-review. Then I hit and reported the Unicode problem again (see comment 3) - Now I hit the SCMError again, and with your patch I located the better error reporting in the log. Here it is: Got SCMError when creating review request: None Traceback (most recent call last): File "/usr/local/lib/python2.6/dist-packages/ReviewBoard-1.6rc2-py2.6.egg/reviewboard/webapi/resources.py", line 5657, in create changenum, local_site) File "/usr/local/lib/python2.6/dist-packages/ReviewBoard-1.6rc2-py2.6.egg/reviewboard/reviews/managers.py", line 96, in create raise ChangeNumberInUseError(review_request) ChangeNumberInUseError: None But to tell the truth, seeing the code I don't understand what is the problem. Please fix both problems!
I missed to mention that we really tried to upload the same change twice. But the error message about the extended information misleading and not helpful.