)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"0ac248a5791251e688ae8fdf8ac141568168944c","unresolved":true,"context_lines":[{"line_number":11,"context_line":"failed deletes, and retry them separately if found."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I96abd0370dd24afdefe192b803d4c09ae3dcfaff"},{"line_number":14,"context_line":"Closes-Bug: 1899495"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"c16bda9d_8616ed53","line":14,"updated":"2021-10-22 18:08:06.000000000","message":"Sounds like it\u0027s more of a Related-Bug -- glance_store is using DLOs, not SLOs.","commit_id":"dd72d0a45580a53a55b99bf2d96b2a530837226e"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"03283a59c536c2000e68a1bb25153a3efe086d60","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"f0c7f581_5d16856e","updated":"2022-08-17 19:49:24.000000000","message":"Thanks for the follow-up -- I\u0027ll squash it in.","commit_id":"ee37cd11821e027e98a014443c59b7fa1969ac58"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"047004990954f180509764fe49b81fc1a71c67db","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"945ccaa8_7d7acdab","updated":"2022-08-17 15:36:02.000000000","message":"little bit of less dark data is probably a good idea\n\nDEBUG:swiftclient:RESP BODY: b\u0027{\"Response Status\": \"502 Bad Gateway\", \"Response Body\": \"\", \"Number Deleted\": 3, \"Number Not Found\": 0, \"Errors\": [[\"/test_segments/big.test/slo/1660745302.167334/4194304/1000000/00000000\", \"503 Service Unavailable\"], [\"/test_segments/big.test/slo/1660745302.167334/4194304/1000000/00000002\", \"503 Service Unavailable\"], [\"/test_segments/big.test/slo/1660745302.167334/4194304/1000000/00000004\", \"503 Service Unavailable\"]]}\u0027\n\n... needs tests https://review.opendev.org/c/openstack/python-swiftclient/+/853511","commit_id":"ee37cd11821e027e98a014443c59b7fa1969ac58"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"50ba45931e180b2c695a1ab2d0717a2f60a856e0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"b1684713_82cbd1ac","updated":"2022-03-22 23:22:09.000000000","message":"recheck","commit_id":"ee37cd11821e027e98a014443c59b7fa1969ac58"}],"swiftclient/client.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"047004990954f180509764fe49b81fc1a71c67db","unresolved":true,"context_lines":[{"line_number":1621,"context_line":"        try:"},{"line_number":1622,"context_line":"            result \u003d json.loads(body)"},{"line_number":1623,"context_line":"        except ValueError:"},{"line_number":1624,"context_line":"            pass"},{"line_number":1625,"context_line":"        else:"},{"line_number":1626,"context_line":"            if result.get(\u0027Errors\u0027):"},{"line_number":1627,"context_line":"                raise SLODeleteException.from_response(resp, body, result)"}],"source_content_type":"text/x-python","patch_set":3,"id":"d54c8767_602d0420","line":1624,"updated":"2022-08-17 15:36:02.000000000","message":"this seems arguably worse","commit_id":"ee37cd11821e027e98a014443c59b7fa1969ac58"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"03283a59c536c2000e68a1bb25153a3efe086d60","unresolved":true,"context_lines":[{"line_number":1621,"context_line":"        try:"},{"line_number":1622,"context_line":"            result \u003d json.loads(body)"},{"line_number":1623,"context_line":"        except ValueError:"},{"line_number":1624,"context_line":"            pass"},{"line_number":1625,"context_line":"        else:"},{"line_number":1626,"context_line":"            if result.get(\u0027Errors\u0027):"},{"line_number":1627,"context_line":"                raise SLODeleteException.from_response(resp, body, result)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5abdbf25_2c845b8a","line":1624,"in_reply_to":"d54c8767_602d0420","updated":"2022-08-17 19:49:24.000000000","message":"No, it\u0027s exactly the same as existing behavior. We can debate about what the right way to handle this situation is, but this can\u0027t be worse than where we are today on master.","commit_id":"ee37cd11821e027e98a014443c59b7fa1969ac58"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"047004990954f180509764fe49b81fc1a71c67db","unresolved":true,"context_lines":[{"line_number":2002,"context_line":"                               response_dict\u003dresponse_dict,"},{"line_number":2003,"context_line":"                               headers\u003dheaders)"},{"line_number":2004,"context_line":"        except SLODeleteException as exc:"},{"line_number":2005,"context_line":"            for failed_obj, _ in exc.parsed_result[\u0027Errors\u0027]:"},{"line_number":2006,"context_line":"                failed_cont, failed_obj \u003d failed_obj.lstrip(\u0027/\u0027).split(\u0027/\u0027, 1)"},{"line_number":2007,"context_line":"                try:"},{"line_number":2008,"context_line":"                    self._retry(None, delete_object, failed_cont, failed_obj,"}],"source_content_type":"text/x-python","patch_set":3,"id":"18b3e6ce_aae49ab1","line":2005,"updated":"2022-08-17 15:36:02.000000000","message":"i\u0027m not familiar with the format of these responses\n\nhttps://github.com/NVIDIA/swift/blob/d8af3d7a0db2609fc1a0805a8d592ba4e2d9e120/swift/common/middleware/bulk.py#L716-L717","commit_id":"ee37cd11821e027e98a014443c59b7fa1969ac58"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"047004990954f180509764fe49b81fc1a71c67db","unresolved":true,"context_lines":[{"line_number":2003,"context_line":"                               headers\u003dheaders)"},{"line_number":2004,"context_line":"        except SLODeleteException as exc:"},{"line_number":2005,"context_line":"            for failed_obj, _ in exc.parsed_result[\u0027Errors\u0027]:"},{"line_number":2006,"context_line":"                failed_cont, failed_obj \u003d failed_obj.lstrip(\u0027/\u0027).split(\u0027/\u0027, 1)"},{"line_number":2007,"context_line":"                try:"},{"line_number":2008,"context_line":"                    self._retry(None, delete_object, failed_cont, failed_obj,"},{"line_number":2009,"context_line":"                                headers\u003dheaders)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1670fb58_1a64a883","line":2006,"updated":"2022-08-17 15:36:02.000000000","message":"is the leading slash always included in the LHS of the error tuples?\n\n\t\u003e\u003e\u003e \u0027//foo/bar\u0027.lstrip(\u0027/\u0027)\n\t\u0027foo/bar\u0027\n\n... hopefully you can\u0027t have a conainer name with a slash in it!","commit_id":"ee37cd11821e027e98a014443c59b7fa1969ac58"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"03283a59c536c2000e68a1bb25153a3efe086d60","unresolved":true,"context_lines":[{"line_number":2003,"context_line":"                               headers\u003dheaders)"},{"line_number":2004,"context_line":"        except SLODeleteException as exc:"},{"line_number":2005,"context_line":"            for failed_obj, _ in exc.parsed_result[\u0027Errors\u0027]:"},{"line_number":2006,"context_line":"                failed_cont, failed_obj \u003d failed_obj.lstrip(\u0027/\u0027).split(\u0027/\u0027, 1)"},{"line_number":2007,"context_line":"                try:"},{"line_number":2008,"context_line":"                    self._retry(None, delete_object, failed_cont, failed_obj,"},{"line_number":2009,"context_line":"                                headers\u003dheaders)"}],"source_content_type":"text/x-python","patch_set":3,"id":"2695960e_e4ad37ef","line":2006,"in_reply_to":"1670fb58_1a64a883","updated":"2022-08-17 19:49:24.000000000","message":"\u003e is the leading slash always included in the LHS of the error tuples?\n\nIt comes from the \"name\" stored in the SLO which has always included the leading slash. See https://github.com/openstack/swift/blob/2.29.1/swift/common/middleware/slo.py#L1280 which can trace its history back to https://github.com/openstack/swift/blob/1.8.0/swift/common/middleware/slo.py#L270\n\nSLO is defensive to it not being there, though (maybe there was some in-review version that allowed a name like \"foo/bar\" to be stored?), so I figure the client should be, too. See https://github.com/openstack/swift/blob/2.29.1/swift/common/middleware/slo.py#L478 and https://github.com/openstack/swift/blob/2.29.1/swift/common/middleware/bulk.py#L455 for example.\n\n\u003e hopefully you can\u0027t have a conainer name with a slash in it!\n\nNo, you cannot -- split_path() will always break the path up on the slash.","commit_id":"ee37cd11821e027e98a014443c59b7fa1969ac58"}]}
