)]}'
{"swift/common/middleware/s3api/controllers/bucket.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"2bc0765d117e7a104cb3a8ebc12d4d6282d53492","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        except ValueError:"},{"line_number":310,"context_line":"            self.logger.error(\u0027Got non-JSON response trying to list %s: %r\u0027,"},{"line_number":311,"context_line":"                              req.path, resp.body)"},{"line_number":312,"context_line":"            raise"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"        is_truncated \u003d max_keys \u003e 0 and len(objects) \u003e max_keys"},{"line_number":315,"context_line":"        objects \u003d objects[:max_keys]"}],"source_content_type":"text/x-python","patch_set":1,"id":"df33271e_bbf03069","line":312,"updated":"2020-03-28 13:26:16.000000000","message":"Ok ,yeah obviously we shouldn\u0027t be expecting anything except JSON from the backend.  I gues this ValueError just end up getting translated into some kind of 503 - but I can stick a name error in here and no unittests fail :\\","commit_id":"cbd39b377cf3ae0da194b95418132aff4ee589ca"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"e18c6b2626c74f9ed39c69d1cb88bd92e64cbf3e","unresolved":true,"context_lines":[{"line_number":306,"context_line":""},{"line_number":307,"context_line":"        try:"},{"line_number":308,"context_line":"            objects \u003d json.loads(resp.body)"},{"line_number":309,"context_line":"        except ValueError:"},{"line_number":310,"context_line":"            self.logger.error(\u0027Got non-JSON response trying to list %s: %r\u0027,"},{"line_number":311,"context_line":"                              req.path, resp.body)"},{"line_number":312,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":2,"id":"d2f17e71_4fa99699","line":309,"range":{"start_line":309,"start_character":15,"end_line":309,"end_character":25},"updated":"2021-06-02 08:27:53.000000000","message":"might be worth catching TypeError too just in case the bod has been set to None","commit_id":"5b57dc3f6015f5393b248a1c34d560c554d90544"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"2db9d71e80969dfa7292054c3b2449de54245360","unresolved":false,"context_lines":[{"line_number":306,"context_line":""},{"line_number":307,"context_line":"        try:"},{"line_number":308,"context_line":"            objects \u003d json.loads(resp.body)"},{"line_number":309,"context_line":"        except ValueError:"},{"line_number":310,"context_line":"            self.logger.error(\u0027Got non-JSON response trying to list %s: %r\u0027,"},{"line_number":311,"context_line":"                              req.path, resp.body)"},{"line_number":312,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":2,"id":"f0f95369_bceb8173","line":309,"range":{"start_line":309,"start_character":15,"end_line":309,"end_character":25},"in_reply_to":"d2f17e71_4fa99699","updated":"2023-05-19 11:06:01.000000000","message":"Done","commit_id":"5b57dc3f6015f5393b248a1c34d560c554d90544"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"e18c6b2626c74f9ed39c69d1cb88bd92e64cbf3e","unresolved":true,"context_lines":[{"line_number":308,"context_line":"            objects \u003d json.loads(resp.body)"},{"line_number":309,"context_line":"        except ValueError:"},{"line_number":310,"context_line":"            self.logger.error(\u0027Got non-JSON response trying to list %s: %r\u0027,"},{"line_number":311,"context_line":"                              req.path, resp.body)"},{"line_number":312,"context_line":"            raise"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"        is_truncated \u003d max_keys \u003e 0 and len(objects) \u003e max_keys"}],"source_content_type":"text/x-python","patch_set":2,"id":"b81cefe5_837bf841","line":311,"range":{"start_line":311,"start_character":40,"end_line":311,"end_character":49},"updated":"2021-06-02 08:27:53.000000000","message":"that could end being a very long log line - how about truncating the body to first N chars?","commit_id":"5b57dc3f6015f5393b248a1c34d560c554d90544"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"2db9d71e80969dfa7292054c3b2449de54245360","unresolved":false,"context_lines":[{"line_number":308,"context_line":"            objects \u003d json.loads(resp.body)"},{"line_number":309,"context_line":"        except ValueError:"},{"line_number":310,"context_line":"            self.logger.error(\u0027Got non-JSON response trying to list %s: %r\u0027,"},{"line_number":311,"context_line":"                              req.path, resp.body)"},{"line_number":312,"context_line":"            raise"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"        is_truncated \u003d max_keys \u003e 0 and len(objects) \u003e max_keys"}],"source_content_type":"text/x-python","patch_set":2,"id":"5db9917d_805a423d","line":311,"range":{"start_line":311,"start_character":40,"end_line":311,"end_character":49},"in_reply_to":"b81cefe5_837bf841","updated":"2023-05-19 11:06:01.000000000","message":"Done","commit_id":"5b57dc3f6015f5393b248a1c34d560c554d90544"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"41827083ab3927f715ea97b244c00dcf993af460","unresolved":true,"context_lines":[{"line_number":344,"context_line":"        except ValueError:"},{"line_number":345,"context_line":"            self.logger.error(\u0027Got non-JSON response trying to list %s: %r\u0027,"},{"line_number":346,"context_line":"                              req.path, cap_length(resp.body, 60))"},{"line_number":347,"context_line":"            raise"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        is_truncated \u003d max_keys \u003e 0 and len(objects) \u003e max_keys"},{"line_number":350,"context_line":"        objects \u003d objects[:max_keys]"}],"source_content_type":"text/x-python","patch_set":3,"id":"582f5569_d957b4bb","line":347,"updated":"2021-06-14 18:54:04.000000000","message":"that\u0027s cool","commit_id":"42c6eeec8cb3b7b8922b2d7797c50c0447e86320"}],"swift/obj/ssync_receiver.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"41827083ab3927f715ea97b244c00dcf993af460","unresolved":true,"context_lines":[{"line_number":380,"context_line":"            raise SsyncClientDisconnected"},{"line_number":381,"context_line":"        if line.strip() !\u003d b\u0027:MISSING_CHECK: START\u0027:"},{"line_number":382,"context_line":"            raise Exception("},{"line_number":383,"context_line":"                \u0027Looking for :MISSING_CHECK: START got %r\u0027 % line[:1024])"},{"line_number":384,"context_line":"        object_hashes \u003d []"},{"line_number":385,"context_line":"        nlines \u003d 0"},{"line_number":386,"context_line":"        while True:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ca41a6a9_d2af14bf","side":"PARENT","line":383,"updated":"2021-06-14 18:54:04.000000000","message":"cap it up!!!","commit_id":"5bc28a7febe8c45df6f489d3de12870fb1b81f58"}],"test/unit/common/middleware/s3api/test_bucket.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"2db9d71e80969dfa7292054c3b2449de54245360","unresolved":true,"context_lines":[{"line_number":199,"context_line":"        # ... but we should at least log the body to aid in debugging"},{"line_number":200,"context_line":"        self.assertIn("},{"line_number":201,"context_line":"            \u0027Got non-JSON response trying to list /bucket: %r\u0027 % resp_body,"},{"line_number":202,"context_line":"            self.s3api.logger.get_lines_for_level(\u0027error\u0027))"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    def test_bucket_GET(self):"},{"line_number":205,"context_line":"        bucket_name \u003d \u0027junk\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"3800f1e0_3fb3ff91","line":202,"updated":"2023-05-19 11:06:01.000000000","message":"would be nice to check the length is capped while we\u0027re at it","commit_id":"6bedde1cc07cccab1a1e9c0018aa8b20731a00c6"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"6ba9b315458ae16d3012e00e44ea3b80facf38c4","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        # ... but we should at least log the body to aid in debugging"},{"line_number":200,"context_line":"        self.assertIn("},{"line_number":201,"context_line":"            \u0027Got non-JSON response trying to list /bucket: %r\u0027 % resp_body,"},{"line_number":202,"context_line":"            self.s3api.logger.get_lines_for_level(\u0027error\u0027))"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    def test_bucket_GET(self):"},{"line_number":205,"context_line":"        bucket_name \u003d \u0027junk\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"2591c23b_f1935831","line":202,"in_reply_to":"3800f1e0_3fb3ff91","updated":"2023-05-19 11:06:56.000000000","message":"Done","commit_id":"6bedde1cc07cccab1a1e9c0018aa8b20731a00c6"}]}
