)]}'
{"swift/common/middleware/slo.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7578c73a1e732a089060cffebf5d3e025d87c756","unresolved":false,"context_lines":[{"line_number":901,"context_line":"            seg_dict[\u0027size_bytes\u0027] \u003d seg_dict.pop(\u0027bytes\u0027, None)"},{"line_number":902,"context_line":"            seg_dict[\u0027etag\u0027] \u003d seg_dict.pop(\u0027hash\u0027, None)"},{"line_number":903,"context_line":""},{"line_number":904,"context_line":"        json_data \u003d json.dumps(segments)  # convert to string"},{"line_number":905,"context_line":"        if six.PY3:"},{"line_number":906,"context_line":"            json_data \u003d json_data.encode(\u0027utf-8\u0027)"},{"line_number":907,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_656f0429","line":904,"updated":"2020-01-24 20:44:10.000000000","message":"I don\u0027t think we have any guarantees about key orders here... so couldn\u0027t json_data come out different depending on which proxy is servicing the request? Which would mean different etags...\n\nI\u0027m so tempted to say that we should just allow slo to accept \"internal\"-format manifests, deprecate ?format\u003draw, and hope to remove it in like a couple years...","commit_id":"c676e740ed7918bfc0754e460b3fc9b37365b279"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"b19818d9747d75764e94f78d79b7bc3051a1c67c","unresolved":false,"context_lines":[{"line_number":901,"context_line":"            seg_dict[\u0027size_bytes\u0027] \u003d seg_dict.pop(\u0027bytes\u0027, None)"},{"line_number":902,"context_line":"            seg_dict[\u0027etag\u0027] \u003d seg_dict.pop(\u0027hash\u0027, None)"},{"line_number":903,"context_line":""},{"line_number":904,"context_line":"        json_data \u003d json.dumps(segments)  # convert to string"},{"line_number":905,"context_line":"        if six.PY3:"},{"line_number":906,"context_line":"            json_data \u003d json_data.encode(\u0027utf-8\u0027)"},{"line_number":907,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_eaba91b8","line":904,"in_reply_to":"3fa7e38b_656f0429","updated":"2020-01-31 01:08:45.000000000","message":"@tim, I like the idea of accepting \u0027internal\u0027-format but still think that should be a separate patch and we should still keep this change for now (until raw gets deprecated). thoughts?","commit_id":"c676e740ed7918bfc0754e460b3fc9b37365b279"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ecdd85610a2a49b79a7d5192bb9e93c5e23d5a78","unresolved":false,"context_lines":[{"line_number":901,"context_line":"            seg_dict[\u0027size_bytes\u0027] \u003d seg_dict.pop(\u0027bytes\u0027, None)"},{"line_number":902,"context_line":"            seg_dict[\u0027etag\u0027] \u003d seg_dict.pop(\u0027hash\u0027, None)"},{"line_number":903,"context_line":""},{"line_number":904,"context_line":"        json_data \u003d json.dumps(segments)  # convert to string"},{"line_number":905,"context_line":"        if six.PY3:"},{"line_number":906,"context_line":"            json_data \u003d json_data.encode(\u0027utf-8\u0027)"},{"line_number":907,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_074fdb8c","line":904,"in_reply_to":"3fa7e38b_eaba91b8","updated":"2020-01-31 17:34:27.000000000","message":"Sounds like a plan.","commit_id":"c676e740ed7918bfc0754e460b3fc9b37365b279"}],"test/functional/test_slo.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1ecb1771dca7fbdba415c71348d3249aa47737d0","unresolved":false,"context_lines":[{"line_number":1100,"context_line":"                                        \u0027format\u0027: \u0027raw\u0027})"},{"line_number":1101,"context_line":"        expected_etag \u003d \u0027fail\u0027"},{"line_number":1102,"context_line":"        for h, v in manifest.conn.response.getheaders():"},{"line_number":1103,"context_line":"            if h \u003d\u003d \u0027etag\u0027:"},{"line_number":1104,"context_line":"                expected_etag \u003d v"},{"line_number":1105,"context_line":"        body_md5 \u003d hashlib.md5(got_body).hexdigest()"},{"line_number":1106,"context_line":"        self.assertEqual(expected_etag, body_md5)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_654864b3","line":1103,"range":{"start_line":1103,"start_character":15,"end_line":1103,"end_character":26},"updated":"2020-01-24 20:48:18.000000000","message":"This works on py2, but on py3 the headers have the same casing they did on the wire. We\u0027ll need a .lower()","commit_id":"c676e740ed7918bfc0754e460b3fc9b37365b279"},{"author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"change_message_id":"b19818d9747d75764e94f78d79b7bc3051a1c67c","unresolved":false,"context_lines":[{"line_number":1100,"context_line":"                                        \u0027format\u0027: \u0027raw\u0027})"},{"line_number":1101,"context_line":"        expected_etag \u003d \u0027fail\u0027"},{"line_number":1102,"context_line":"        for h, v in manifest.conn.response.getheaders():"},{"line_number":1103,"context_line":"            if h \u003d\u003d \u0027etag\u0027:"},{"line_number":1104,"context_line":"                expected_etag \u003d v"},{"line_number":1105,"context_line":"        body_md5 \u003d hashlib.md5(got_body).hexdigest()"},{"line_number":1106,"context_line":"        self.assertEqual(expected_etag, body_md5)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_0a760d42","line":1103,"range":{"start_line":1103,"start_character":15,"end_line":1103,"end_character":26},"in_reply_to":"3fa7e38b_654864b3","updated":"2020-01-31 01:08:45.000000000","message":"Done","commit_id":"c676e740ed7918bfc0754e460b3fc9b37365b279"}]}
