)]}'
{"swift/common/middleware/bulk.py":[{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"b3db90c8e64c599cc517b0591a31dc41c1c3b6f7","unresolved":false,"context_lines":[{"line_number":493,"context_line":""},{"line_number":494,"context_line":"        except HTTPException as err:"},{"line_number":495,"context_line":"            resp_dict[\u0027Response Status\u0027] \u003d err.status"},{"line_number":496,"context_line":"            resp_dict[\u0027Response Body\u0027] \u003d err.body.decode(\u0027utf-8\u0027)"},{"line_number":497,"context_line":"        except Exception:"},{"line_number":498,"context_line":"            self.logger.exception(\u0027Error in bulk delete.\u0027)"},{"line_number":499,"context_line":"            resp_dict[\u0027Response Status\u0027] \u003d HTTPServerError().status"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_ad630adc","line":496,"updated":"2019-05-09 03:13:50.000000000","message":"Are you sure there can be no bad character in these responses, like a path? I\u0027m just wary of changing py2 so easily, even if unit tests pass. It came bite us enough in the past.","commit_id":"eb0a31fcf9d6f29554afc8b768beb2b2be7fd543"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"55371db80b693d9da16196546f9f1329cab15d2b","unresolved":false,"context_lines":[{"line_number":493,"context_line":""},{"line_number":494,"context_line":"        except HTTPException as err:"},{"line_number":495,"context_line":"            resp_dict[\u0027Response Status\u0027] \u003d err.status"},{"line_number":496,"context_line":"            resp_dict[\u0027Response Body\u0027] \u003d err.body.decode(\u0027utf-8\u0027)"},{"line_number":497,"context_line":"        except Exception:"},{"line_number":498,"context_line":"            self.logger.exception(\u0027Error in bulk delete.\u0027)"},{"line_number":499,"context_line":"            resp_dict[\u0027Response Status\u0027] \u003d HTTPServerError().status"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_ac0ea22f","line":496,"in_reply_to":"dfbec78f_ad630adc","updated":"2019-05-09 15:14:56.000000000","message":"Any error should be coming from *us*, so I\u0027d certainly expect it to be UTF-8. To the extent that may not be true, py2 is just as susceptible to it causing a problem (at least, when the client is asking for JSON, which would certainly be my default preference):\n\n$ python2\nPython 2.7.15 (default, Oct 15 2018, 15:26:09) \n[GCC 8.2.1 20180801 (Red Hat 8.2.1-2)] on linux2\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n\u003e\u003e\u003e json.dumps({\u0027foo\u0027: \u0027bar\\xff\u0027})\nTraceback (most recent call last):\n  File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\n  File \"/usr/lib64/python2.7/json/__init__.py\", line 244, in dumps\n    return _default_encoder.encode(obj)\n  File \"/usr/lib64/python2.7/json/encoder.py\", line 207, in encode\n    chunks \u003d self.iterencode(o, _one_shot\u003dTrue)\n  File \"/usr/lib64/python2.7/json/encoder.py\", line 270, in iterencode\n    return _iterencode(o, 0)\nUnicodeDecodeError: \u0027utf8\u0027 codec can\u0027t decode byte 0xff in position 3: invalid start byte","commit_id":"eb0a31fcf9d6f29554afc8b768beb2b2be7fd543"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"b3db90c8e64c599cc517b0591a31dc41c1c3b6f7","unresolved":false,"context_lines":[{"line_number":651,"context_line":""},{"line_number":652,"context_line":"        except HTTPException as err:"},{"line_number":653,"context_line":"            resp_dict[\u0027Response Status\u0027] \u003d err.status"},{"line_number":654,"context_line":"            resp_dict[\u0027Response Body\u0027] \u003d err.body.decode(\u0027utf-8\u0027)"},{"line_number":655,"context_line":"        except (tarfile.TarError, zlib.error) as tar_error:"},{"line_number":656,"context_line":"            resp_dict[\u0027Response Status\u0027] \u003d HTTPBadRequest().status"},{"line_number":657,"context_line":"            resp_dict[\u0027Response Body\u0027] \u003d \u0027Invalid Tar File: %s\u0027 % tar_error"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_8d9e46b6","line":654,"updated":"2019-05-09 03:13:50.000000000","message":"Ditto.","commit_id":"eb0a31fcf9d6f29554afc8b768beb2b2be7fd543"}]}
