)]}'
{"swift/proxy/controllers/obj.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"ff7213a58bbfd7decddbeaea9eb50a9bd7be19c7","unresolved":true,"context_lines":[{"line_number":2816,"context_line":"        used_etag \u003d self.last_headers.get(\u0027X-Object-Sysmeta-EC-ETag\u0027)"},{"line_number":2817,"context_line":"        for source, node in self.source_and_node_iter:"},{"line_number":2818,"context_line":"            if not source:"},{"line_number":2819,"context_line":"                # _make_node_request only returns good sources"},{"line_number":2820,"context_line":"                continue"},{"line_number":2821,"context_line":"            if source.getheader(\u0027X-Object-Sysmeta-EC-ETag\u0027) !\u003d used_etag:"},{"line_number":2822,"context_line":"                self.app.logger.warning("}],"source_content_type":"text/x-python","patch_set":2,"id":"626fdfdb_015913ac","line":2819,"updated":"2021-04-26 11:26:13.000000000","message":"yep","commit_id":"d4ca1142d8b2c322dc52577006e21e8c1c63c278"}],"test/unit/proxy/controllers/test_obj.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"ff7213a58bbfd7decddbeaea9eb50a9bd7be19c7","unresolved":true,"context_lines":[{"line_number":4784,"context_line":"            resp_body +\u003d b\u0027\u0027.join(resp.app_iter)"},{"line_number":4785,"context_line":"        # we log errors"},{"line_number":4786,"context_line":"        log_lines \u003d self.app.logger.get_lines_for_level(\u0027error\u0027)"},{"line_number":4787,"context_line":"        for line in log_lines:"},{"line_number":4788,"context_line":"            self.assertIn(\u0027ChunkWriteTimeout fetching fragments\u0027, line)"},{"line_number":4789,"context_line":"        # client gets a short read"},{"line_number":4790,"context_line":"        self.assertEqual(16051, len(test_data))"}],"source_content_type":"text/x-python","patch_set":2,"id":"9287e02c_a3ef21da","line":4787,"updated":"2021-04-26 11:26:13.000000000","message":"nit: assert len(log_lines) \u003d\u003d 1","commit_id":"d4ca1142d8b2c322dc52577006e21e8c1c63c278"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"ff7213a58bbfd7decddbeaea9eb50a9bd7be19c7","unresolved":true,"context_lines":[{"line_number":4791,"context_line":"        self.assertEqual(8192, len(resp_body))"},{"line_number":4792,"context_line":"        self.assertNotEqual("},{"line_number":4793,"context_line":"            md5(resp_body, usedforsecurity\u003dFalse).hexdigest(),"},{"line_number":4794,"context_line":"            etag)"},{"line_number":4795,"context_line":""},{"line_number":4796,"context_line":"    def test_GET_read_timeout_retrying_but_no_more_useful_nodes(self):"},{"line_number":4797,"context_line":"        # verify EC GET behavior when initial batch of nodes time out then"}],"source_content_type":"text/x-python","patch_set":2,"id":"2b343822_be095383","line":4794,"updated":"2021-04-26 11:26:13.000000000","message":"ok. revert and this fails\n\n  \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nFAIL: test_GET_write_timeout (test.unit.proxy.controllers.test_obj.TestECObjController)\n----------------------------------------------------------------------\nTraceback (most recent call last):\n  File \"/Users/acoles/0dev/openstack/swift/test/unit/proxy/controllers/test_obj.py\", line 4788, in test_GET_write_timeout\n    self.assertIn(\u0027ChunkWriteTimeout fetching fragments\u0027, line)\nAssertionError: \u0027ChunkWriteTimeout fetching fragments\u0027 not found in \"Exception fetching fragments for \u0027/a/c/o\u0027: ChunkWriteTimeout (0.01s)\"","commit_id":"d4ca1142d8b2c322dc52577006e21e8c1c63c278"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"ff7213a58bbfd7decddbeaea9eb50a9bd7be19c7","unresolved":true,"context_lines":[{"line_number":4850,"context_line":"                ignore_404_handoff +\u003d 1"},{"line_number":4851,"context_line":"        self.assertEqual(nparity - 2, ignore_404, debug_lines)"},{"line_number":4852,"context_line":"        self.assertEqual(nhandoffs, ignore_404_handoff, debug_lines)"},{"line_number":4853,"context_line":"        self.assertEqual(len(debug_lines), ignore_404_handoff + ignore_404)"},{"line_number":4854,"context_line":"        self.assertEqual(self.logger.get_lines_for_level(\u0027warning\u0027), ["},{"line_number":4855,"context_line":"            \u0027Skipping source (etag mismatch: got other_etag, \u0027"},{"line_number":4856,"context_line":"            \u0027expected %s)\u0027 % etag] * 2)"}],"source_content_type":"text/x-python","patch_set":2,"id":"192d3959_b9e77b05","line":4853,"updated":"2021-04-26 11:26:13.000000000","message":"ok fails with reversions in obj controller","commit_id":"d4ca1142d8b2c322dc52577006e21e8c1c63c278"}]}
