Seen in production's api.log:
Traceback (most recent call last):
File "/srv/turnip/payloads/9cf5ffaea234b407f4c60a58966fbc40066a827c/env/local/lib/python2.7/site-packages/gunicorn/workers/sync.py", line 130, in handle
self.handle_request(listener, req, client, addr)
File "/srv/turnip/payloads/9cf5ffaea234b407f4c60a58966fbc40066a827c/env/local/lib/python2.7/site-packages/gunicorn/workers/sync.py", line 171, in handle_request
respiter = self.wsgi(environ, resp.start_response)
File "/srv/turnip/payloads/9cf5ffaea234b407f4c60a58966fbc40066a827c/env/local/lib/python2.7/site-packages/pyramid/router.py", line 242, in __call__
response = self.invoke_subrequest(request, use_tweens=True)
File "/srv/turnip/payloads/9cf5ffaea234b407f4c60a58966fbc40066a827c/env/local/lib/python2.7/site-packages/pyramid/router.py", line 217, in invoke_subrequest
response = handle_request(request)
File "/srv/turnip/payloads/9cf5ffaea234b407f4c60a58966fbc40066a827c/env/local/lib/python2.7/site-packages/pyramid/tweens.py", line 46, in excview_tween
response = view_callable(exc, request)
File "/srv/turnip/payloads/9cf5ffaea234b407f4c60a58966fbc40066a827c/env/local/lib/python2.7/site-packages/pyramid/config/views.py", line 385, in viewresult_to_response
result = view(context, request)
File "/srv/turnip/payloads/9cf5ffaea234b407f4c60a58966fbc40066a827c/env/local/lib/python2.7/site-packages/pyramid/tweens.py", line 21, in excview_tween
response = handler(request)
File "/srv/turnip/payloads/9cf5ffaea234b407f4c60a58966fbc40066a827c/env/local/lib/python2.7/site-packages/pyramid/router.py", line 163, in handle_request
response = view_callable(context, request)
File "/srv/turnip/payloads/9cf5ffaea234b407f4c60a58966fbc40066a827c/env/local/lib/python2.7/site-packages/pyramid/config/views.py", line 596, in __call__
return view(context, request)
File "/srv/turnip/payloads/9cf5ffaea234b407f4c60a58966fbc40066a827c/env/local/lib/python2.7/site-packages/pyramid/config/views.py", line 329, in attr_view
return view(context, request)
File "/srv/turnip/payloads/9cf5ffaea234b407f4c60a58966fbc40066a827c/env/local/lib/python2.7/site-packages/pyramid/config/views.py", line 305, in predicate_wrapper
return view(context, request)
File "/srv/turnip/payloads/9cf5ffaea234b407f4c60a58966fbc40066a827c/env/local/lib/python2.7/site-packages/pyramid/config/views.py", line 355, in rendered_view
result = view(context, request)
File "/srv/turnip/payloads/9cf5ffaea234b407f4c60a58966fbc40066a827c/env/local/lib/python2.7/site-packages/pyramid/config/views.py", line 501, in _requestonly_view
response = view(request)
File "/srv/turnip/payloads/9cf5ffaea234b407f4c60a58966fbc40066a827c/env/local/lib/python2.7/site-packages/cornice/service.py", line 527, in wrapper
response = view_()
File "/srv/turnip/payloads/9cf5ffaea234b407f4c60a58966fbc40066a827c/turnip/api/views.py", line 33, in validate_path_decorator
return func(self, self.repo_store, name)
File "/srv/turnip/payloads/9cf5ffaea234b407f4c60a58966fbc40066a827c/turnip/api/views.py", line 268, in collection_post
commits = store.get_commits(repo_store, repo_name, commits)
File "/srv/turnip/payloads/9cf5ffaea234b407f4c60a58966fbc40066a827c/turnip/api/store.py", line 462, in get_commits
commits.append(get_commit(repo_store, repo_name, commit, repo))
File "/srv/turnip/payloads/9cf5ffaea234b407f4c60a58966fbc40066a827c/turnip/api/store.py", line 453, in get_commit
return format_commit(git_object)
File "/srv/turnip/payloads/9cf5ffaea234b407f4c60a58966fbc40066a827c/turnip/api/store.py", line 60, in format_commit
'message': git_object.message,
UnicodeDecodeError: 'gb2312' codec can't decode bytes in position 191-192: illegal multibyte sequence
Unfortunately we don't have the request details (suboptimal logging) so I'm not sure exactly what commit this was, but it seems pretty clear that this is going to have trouble with non-UTF-8 commit messages.