)]}'
{"swift/common/middleware/slo.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1b6b4f21b566209db76ebc303abc93bc2872999d","unresolved":false,"context_lines":[{"line_number":1083,"context_line":"                resp_dict \u003d {}"},{"line_number":1084,"context_line":"                if heartbeat:"},{"line_number":1085,"context_line":"                    resp_dict[\u0027Response Status\u0027] \u003d err.status"},{"line_number":1086,"context_line":"                    resp_dict[\u0027Response Body\u0027] \u003d err.body"},{"line_number":1087,"context_line":"                else:"},{"line_number":1088,"context_line":"                    start_response(err.status,"},{"line_number":1089,"context_line":"                                   [(h, v) for h, v in err.headers.items()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_23438f6e","line":1086,"updated":"2017-11-02 19:01:48.000000000","message":"Should we do a similar fake-call here?","commit_id":"8fa3c2e9b6e8be33fd5da8aaccd19b9f88a046f0"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"fed75d3100280a3c85a11f0975301ee679cb69ec","unresolved":false,"context_lines":[{"line_number":1083,"context_line":"                resp_dict \u003d {}"},{"line_number":1084,"context_line":"                if heartbeat:"},{"line_number":1085,"context_line":"                    resp_dict[\u0027Response Status\u0027] \u003d err.status"},{"line_number":1086,"context_line":"                    resp_dict[\u0027Response Body\u0027] \u003d err.body"},{"line_number":1087,"context_line":"                else:"},{"line_number":1088,"context_line":"                    start_response(err.status,"},{"line_number":1089,"context_line":"                                   [(h, v) for h, v in err.headers.items()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_61bdffd6","line":1086,"in_reply_to":"3f4b6375_23438f6e","updated":"2017-11-02 19:41:54.000000000","message":"I did that first but then realised that the \u0027normal\u0027 SLO PUT *replaces* the default 400 message (defined swob.py) with the segment errors, so maybe we shouldn\u0027t include the default message in this case. Whereas in the 422 case the normal response has the default message so made sense to put the default into the heartbeat Response Body.\n\nBut IDK! I think having the words \u0027Response Body\u0027 appear in the body is the most significant piece, for consistency...but then it seemed to make sense to populate it with something.","commit_id":"8fa3c2e9b6e8be33fd5da8aaccd19b9f88a046f0"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1b6b4f21b566209db76ebc303abc93bc2872999d","unresolved":false,"context_lines":[{"line_number":1107,"context_line":"                if heartbeat:"},{"line_number":1108,"context_line":"                    yield separator + get_response_body(out_content_type, {"},{"line_number":1109,"context_line":"                        \u0027Response Status\u0027: err.status,"},{"line_number":1110,"context_line":"                        \u0027Response Body\u0027: \u0027\u0027.join(err({}, lambda *args: None)),"},{"line_number":1111,"context_line":"                    }, problem_segments, \u0027upload\u0027)"},{"line_number":1112,"context_line":"                else:"},{"line_number":1113,"context_line":"                    for chunk in err(req.environ, start_response):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_837a43b7","line":1110,"updated":"2017-11-02 19:01:48.000000000","message":"What will err.body be if we *don\u0027t* call the app?","commit_id":"8fa3c2e9b6e8be33fd5da8aaccd19b9f88a046f0"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"fed75d3100280a3c85a11f0975301ee679cb69ec","unresolved":false,"context_lines":[{"line_number":1107,"context_line":"                if heartbeat:"},{"line_number":1108,"context_line":"                    yield separator + get_response_body(out_content_type, {"},{"line_number":1109,"context_line":"                        \u0027Response Status\u0027: err.status,"},{"line_number":1110,"context_line":"                        \u0027Response Body\u0027: \u0027\u0027.join(err({}, lambda *args: None)),"},{"line_number":1111,"context_line":"                    }, problem_segments, \u0027upload\u0027)"},{"line_number":1112,"context_line":"                else:"},{"line_number":1113,"context_line":"                    for chunk in err(req.environ, start_response):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_c1cdd385","line":1110,"in_reply_to":"3f4b6375_837a43b7","updated":"2017-11-02 19:41:54.000000000","message":"empty string IIRC","commit_id":"8fa3c2e9b6e8be33fd5da8aaccd19b9f88a046f0"}],"test/functional/test_slo.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1b6b4f21b566209db76ebc303abc93bc2872999d","unresolved":false,"context_lines":[{"line_number":878,"context_line":"        self.assertNotIn(\u0027Etag\u0027, resp)"},{"line_number":879,"context_line":"        self.assertNotIn(\u0027Last Modified\u0027, resp)"},{"line_number":880,"context_line":"        resp_body \u003d resp.pop(\u0027Response Body\u0027)"},{"line_number":881,"context_line":"        self.assertIn(\u0027\u003ch1\u003eUnprocessable Entity\u003c/h1\u003e\u0027, resp_body)"},{"line_number":882,"context_line":"        self.assertEqual(resp, {"},{"line_number":883,"context_line":"            \u0027Response Status\u0027: \u0027422 Unprocessable Entity\u0027,"},{"line_number":884,"context_line":"            \u0027Errors\u0027: [],"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_865db116","line":881,"updated":"2017-11-02 19:01:48.000000000","message":"It seems weird for us to shove HTML inside of JSON... I almost wonder if we should drop in\n\n err.body or \u0027\\n\u0027.join(swob.RESPONSE_REASONS.get(err.status_int, [\u0027\u0027]))\n\nor something?","commit_id":"8fa3c2e9b6e8be33fd5da8aaccd19b9f88a046f0"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"fed75d3100280a3c85a11f0975301ee679cb69ec","unresolved":false,"context_lines":[{"line_number":878,"context_line":"        self.assertNotIn(\u0027Etag\u0027, resp)"},{"line_number":879,"context_line":"        self.assertNotIn(\u0027Last Modified\u0027, resp)"},{"line_number":880,"context_line":"        resp_body \u003d resp.pop(\u0027Response Body\u0027)"},{"line_number":881,"context_line":"        self.assertIn(\u0027\u003ch1\u003eUnprocessable Entity\u003c/h1\u003e\u0027, resp_body)"},{"line_number":882,"context_line":"        self.assertEqual(resp, {"},{"line_number":883,"context_line":"            \u0027Response Status\u0027: \u0027422 Unprocessable Entity\u0027,"},{"line_number":884,"context_line":"            \u0027Errors\u0027: [],"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_a1741737","line":881,"in_reply_to":"3f4b6375_865db116","updated":"2017-11-02 19:41:54.000000000","message":"that would WFM - it\u0027s not like there is any definition of a schema for these reponse bodies...unless bulk sets some precedent??","commit_id":"8fa3c2e9b6e8be33fd5da8aaccd19b9f88a046f0"}]}
