)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"8756e0fd3c90abad8c3520952ff5bf6a31c19385","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"6654dfc8_8014540a","updated":"2022-07-26 02:44:42.000000000","message":"Oh, wait, never mind.","commit_id":"37db27857718e94e12d0f2925ff1a6f7c8d60dc2"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"d04a46a2d34c17a034e34cb1bae0b80cdae70c52","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"687b8e3a_b3c60341","updated":"2022-07-26 02:41:34.000000000","message":"Sorry, I don\u0027t understand how this is intended to work. See inline.","commit_id":"37db27857718e94e12d0f2925ff1a6f7c8d60dc2"},{"author":{"_account_id":28499,"name":"Romain de Joux","email":"romain.de-joux@ovhcloud.com","username":"rdejoux"},"change_message_id":"8cb1e01937873288797a5d03abb9f793cee8c18e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3728e6e2_51a1c28c","updated":"2022-07-29 12:18:13.000000000","message":"Thanks for this updated patch Tim and nice test patch !\nall ready test on our preproduction.\n\nps: sorry for my latency to reply, lots of things to do before my vacations.","commit_id":"e6ee372744de9855ac3bfe5dea0859c42ae85cc2"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"24b2b8a46b43fc7437043296e8aa16d8c720fecc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"f60e2ea6_a20aeddc","updated":"2022-07-29 22:13:18.000000000","message":"Thanks, Romain! All the same people have signed off on this as the parent, and the upgrade concern was addressed -- I think it\u0027s good to merge.","commit_id":"e6ee372744de9855ac3bfe5dea0859c42ae85cc2"}],"swift/common/middleware/slo.py":[{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"d04a46a2d34c17a034e34cb1bae0b80cdae70c52","unresolved":true,"context_lines":[{"line_number":1532,"context_line":"        if resp.is_success:"},{"line_number":1533,"context_line":"            if config_true_value(resp.headers.get(\u0027X-Static-Large-Object\u0027)):"},{"line_number":1534,"context_line":"                try:"},{"line_number":1535,"context_line":"                    return json.loads(resp.body)"},{"line_number":1536,"context_line":"                except ValueError:"},{"line_number":1537,"context_line":"                    raise HTTPServerError(\u0027Unable to load SLO manifest\u0027)"},{"line_number":1538,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7d66c44e_7f362b41","line":1535,"updated":"2022-07-26 02:41:34.000000000","message":"I don\u0027t understand. As much as I can read RFC-7233, Section 2.1 says that bytes\u003d-1 means \"last byte of the representation\". So, you receive a body of 1 byte long. And here we\u0027re trying to load the JSON of it. How does this work?","commit_id":"37db27857718e94e12d0f2925ff1a6f7c8d60dc2"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"8756e0fd3c90abad8c3520952ff5bf6a31c19385","unresolved":false,"context_lines":[{"line_number":1532,"context_line":"        if resp.is_success:"},{"line_number":1533,"context_line":"            if config_true_value(resp.headers.get(\u0027X-Static-Large-Object\u0027)):"},{"line_number":1534,"context_line":"                try:"},{"line_number":1535,"context_line":"                    return json.loads(resp.body)"},{"line_number":1536,"context_line":"                except ValueError:"},{"line_number":1537,"context_line":"                    raise HTTPServerError(\u0027Unable to load SLO manifest\u0027)"},{"line_number":1538,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ec9129b3_36243f02","line":1535,"in_reply_to":"7d66c44e_7f362b41","updated":"2022-07-26 02:44:42.000000000","message":"The changelog has the explanation.","commit_id":"37db27857718e94e12d0f2925ff1a6f7c8d60dc2"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f6106b4f7f9784a48cf253254d1be4b6396d4aa7","unresolved":false,"context_lines":[{"line_number":1532,"context_line":"        if resp.is_success:"},{"line_number":1533,"context_line":"            if config_true_value(resp.headers.get(\u0027X-Static-Large-Object\u0027)):"},{"line_number":1534,"context_line":"                try:"},{"line_number":1535,"context_line":"                    return json.loads(resp.body)"},{"line_number":1536,"context_line":"                except ValueError:"},{"line_number":1537,"context_line":"                    raise HTTPServerError(\u0027Unable to load SLO manifest\u0027)"},{"line_number":1538,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"023e4f6c_9a6e37d2","line":1535,"in_reply_to":"ec9129b3_36243f02","updated":"2022-07-26 04:33:52.000000000","message":"Yeah, that update_ignore_range_header() is tricky -- and we might still want to check that Content-Length is \u003e1, in case the object-server that responds is from before https://github.com/openstack/swift/commit/e8b654f3 (i.e. prior to swift 2.24.0). If we *did* get back a single byte, we could refetch and fall back to the parent patch\u0027s behavior.\n\nOTOH, our recommendation is to upgrade object-servers before proxies and the fallback is a fairly clean 500 which the client can/should retry. *shrug*","commit_id":"37db27857718e94e12d0f2925ff1a6f7c8d60dc2"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"13154b407f27de0bd778e45210e89050494f4a6a","unresolved":true,"context_lines":[{"line_number":1531,"context_line":""},{"line_number":1532,"context_line":"        if resp.is_success and config_true_value(resp.headers.get("},{"line_number":1533,"context_line":"                \u0027X-Static-Large-Object\u0027)) and len(resp.body) \u003d\u003d 1:"},{"line_number":1534,"context_line":"            # pre-2.24.0 object-server"},{"line_number":1535,"context_line":"            manifest_req \u003d Request.blank(\u0027\u0027, new_env)"},{"line_number":1536,"context_line":"            resp \u003d manifest_req.get_response(self.app)"},{"line_number":1537,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5e461c37_1d18404c","line":1534,"updated":"2022-07-28 20:03:50.000000000","message":"Not so bad fixing the upgrade bug. Might still consume a bunch of resources discarding if we\u0027ve got\n\n* replica A with an SLO manifest running swift \u003c2.24.0 and\n* replica B with a multi-gig non-manifest\n\nbut it\u0027s not any worse than what\u0027s already on master, and it should be a transient state as the upgrade progresses.\n\nNote that using `resp.body` will ensure we read and close the bad response, so we don\u0027t need to add another drain_and_close() call here.","commit_id":"9d3350386063670c6f410f762fb2c12d23fb76ea"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"433b0d2f501c891952c92d1a64b20db8b1958f42","unresolved":true,"context_lines":[{"line_number":1531,"context_line":""},{"line_number":1532,"context_line":"        if resp.is_success and config_true_value(resp.headers.get("},{"line_number":1533,"context_line":"                \u0027X-Static-Large-Object\u0027)) and len(resp.body) \u003d\u003d 1:"},{"line_number":1534,"context_line":"            # pre-2.24.0 object-server"},{"line_number":1535,"context_line":"            manifest_req \u003d Request.blank(\u0027\u0027, new_env)"},{"line_number":1536,"context_line":"            resp \u003d manifest_req.get_response(self.app)"},{"line_number":1537,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baad8d33_45a20d75","line":1534,"in_reply_to":"5e461c37_1d18404c","updated":"2022-07-28 21:35:00.000000000","message":"The logic checks out.","commit_id":"9d3350386063670c6f410f762fb2c12d23fb76ea"}]}
