)]}'
{"swift/proxy/controllers/base.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"3347fddd3ba4828dca854221b6f0600069c491aa","unresolved":false,"context_lines":[{"line_number":1297,"context_line":"                    (is_server_error(possible_source.status) or"},{"line_number":1298,"context_line":"                     possible_source.status \u003d\u003d HTTP_NOT_FOUND) and \\"},{"line_number":1299,"context_line":"                    not Timestamp(src_headers.get(\u0027x-backend-timestamp\u0027, 0)):"},{"line_number":1300,"context_line":"                # throw out 5XX and 404s from handoff nodes unless the data is"},{"line_number":1301,"context_line":"                # really on disk and had been DELETEd"},{"line_number":1302,"context_line":"                return False"},{"line_number":1303,"context_line":"            self.statuses.append(possible_source.status)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_4b034b11","line":1300,"updated":"2019-12-23 16:15:17.000000000","message":"I think dumping the 5XX form the handoffs is reasonable.\n\nIf there\u0027s a serious mis-configuration that causes all nodes to 503 or we don\u0027t get a response from the primaries we\u0027ll still give best_response an empty list and return 503 to the client","commit_id":"d1340f74e0b018d6bde167c3e31b3da57a715075"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"4638ac4641d4e34c2e950a399db8fe8f2ef72f1c","unresolved":false,"context_lines":[{"line_number":1293,"context_line":"                    if not self.newest:  # one good source is enough"},{"line_number":1294,"context_line":"                        return True"},{"line_number":1295,"context_line":"        else:"},{"line_number":1296,"context_line":"            if \u0027handoff_index\u0027 in node and \\"},{"line_number":1297,"context_line":"                    (is_server_error(possible_source.status) or"},{"line_number":1298,"context_line":"                     possible_source.status \u003d\u003d HTTP_NOT_FOUND) and \\"},{"line_number":1299,"context_line":"                    not Timestamp(src_headers.get(\u0027x-backend-timestamp\u0027, 0)):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_c3f61b91","line":1296,"range":{"start_line":1296,"start_character":15,"end_line":1296,"end_character":38},"updated":"2020-01-02 22:15:54.000000000","message":"OK, so what\u0027s this going to do when one or more primaries are error-limited? I guess it might push things toward serving a 503 to the client (since we won\u0027t have enough responses), which is no worse than we were before... but does it still resolve the bug well enough?","commit_id":"d8a6bf8af389cbe5034139a321ad5d5d5e313aba"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"4638ac4641d4e34c2e950a399db8fe8f2ef72f1c","unresolved":false,"context_lines":[{"line_number":1296,"context_line":"            if \u0027handoff_index\u0027 in node and \\"},{"line_number":1297,"context_line":"                    (is_server_error(possible_source.status) or"},{"line_number":1298,"context_line":"                     possible_source.status \u003d\u003d HTTP_NOT_FOUND) and \\"},{"line_number":1299,"context_line":"                    not Timestamp(src_headers.get(\u0027x-backend-timestamp\u0027, 0)):"},{"line_number":1300,"context_line":"                # throw out 5XX and 404s from handoff nodes unless the data is"},{"line_number":1301,"context_line":"                # really on disk and had been DELETEd"},{"line_number":1302,"context_line":"                return False"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_c3cdbb5e","line":1299,"range":{"start_line":1299,"start_character":24,"end_line":1299,"end_character":76},"updated":"2020-01-02 22:15:54.000000000","message":"Our server errors should never include a timestamp, right?","commit_id":"d8a6bf8af389cbe5034139a321ad5d5d5e313aba"}],"test/unit/__init__.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"87eb58961e593e9e2c2a6e21a4edcdb7164a2206","unresolved":false,"context_lines":[{"line_number":1183,"context_line":"        return self.readable.read(amt)"},{"line_number":1184,"context_line":""},{"line_number":1185,"context_line":"    def __repr__(self):"},{"line_number":1186,"context_line":"        return \u0027\u003cStubResponse %s\u003e\u0027 % self.status"},{"line_number":1187,"context_line":""},{"line_number":1188,"context_line":""},{"line_number":1189,"context_line":"def encode_frag_archive_bodies(policy, body):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_b157cc5a","line":1186,"updated":"2019-12-23 20:03:29.000000000","message":"Might be worth including headers/body, too? *shrug*\n\nBetter than it was, for sure!","commit_id":"d1340f74e0b018d6bde167c3e31b3da57a715075"}],"test/unit/proxy/controllers/test_obj.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"3347fddd3ba4828dca854221b6f0600069c491aa","unresolved":false,"context_lines":[{"line_number":798,"context_line":""},{"line_number":799,"context_line":"        with capture_http_requests(get_response):"},{"line_number":800,"context_line":"            resp \u003d req.get_response(self.app)"},{"line_number":801,"context_line":"        self.assertEqual(resp.status_int, 404)"},{"line_number":802,"context_line":""},{"line_number":803,"context_line":"    def test_container_sync_delete(self):"},{"line_number":804,"context_line":"        ts \u003d (utils.Timestamp(t) for t in itertools.count(int(time.time())))"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_8b094333","line":801,"updated":"2019-12-23 16:15:17.000000000","message":"despite twice as many 507\u0027s - the primaries all responded 404 with a tombstone backend timestamp - there\u0027s really no good reason for this response to be anything except 404!","commit_id":"d1340f74e0b018d6bde167c3e31b3da57a715075"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"87eb58961e593e9e2c2a6e21a4edcdb7164a2206","unresolved":false,"context_lines":[{"line_number":798,"context_line":""},{"line_number":799,"context_line":"        with capture_http_requests(get_response):"},{"line_number":800,"context_line":"            resp \u003d req.get_response(self.app)"},{"line_number":801,"context_line":"        self.assertEqual(resp.status_int, 404)"},{"line_number":802,"context_line":""},{"line_number":803,"context_line":"    def test_container_sync_delete(self):"},{"line_number":804,"context_line":"        ts \u003d (utils.Timestamp(t) for t in itertools.count(int(time.time())))"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_b1ccac34","line":801,"in_reply_to":"3fa7e38b_8b094333","updated":"2019-12-23 20:03:29.000000000","message":"Should we assert that the timestamp made it to the response that we\u0027re handing up the pipeline?","commit_id":"d1340f74e0b018d6bde167c3e31b3da57a715075"}]}
