)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"change_message_id":"fb2a2b62ec9157e096ef3407fd0763b1602a493f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"9aa9b831_4f07915d","updated":"2026-05-07 01:22:08.000000000","message":"The two new helper functions looks great!\n\nThere is a potential bug fix, I feel worthy to be called out in the commit message:\n```\nAs a side effect, an invalid X-Backend-Storage-Policy-Index header on a container DELETE no longer returns 400. This header is not meaningful for container DELETE and was previously rejected only by accident.\n```","commit_id":"65e47b755b3a2b7399997133ed208fad97cefdca"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"4ab1b7a88707f656de7ff2bff0091dbdd1d7d7af","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"368a1e8d_76f7e4b5","updated":"2026-05-07 16:30:45.000000000","message":"not done a full review yet, just one comment so far\n\nI like the goal! similar to GET_object and GET_shard","commit_id":"65e47b755b3a2b7399997133ed208fad97cefdca"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"d3a7bfe8d88831d70927524c9a8317a3b8fa9dea","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"004c416b_9c0fadad","updated":"2026-05-07 17:29:29.000000000","message":"LGTM much easier to read","commit_id":"43965416e7f09fdf8e2c1d62b01e5f74a26ab437"}],"swift/container/server.py":[{"author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"change_message_id":"fb2a2b62ec9157e096ef3407fd0763b1602a493f","unresolved":true,"context_lines":[{"line_number":362,"context_line":"            return HTTPInsufficientStorage(drive\u003ddrive, request\u003dreq)"},{"line_number":363,"context_line":"        # policy index is only relevant for delete_obj (and transitively for"},{"line_number":364,"context_line":"        # auto create accounts)"},{"line_number":365,"context_line":"        obj_policy_index \u003d self.get_and_validate_policy_index(req) or 0"},{"line_number":366,"context_line":"        broker \u003d self._get_container_broker(drive, part, account, container)"},{"line_number":367,"context_line":"        if obj:"},{"line_number":368,"context_line":"            self._maybe_autocreate(broker, req_timestamp, account,"}],"source_content_type":"text/x-python","patch_set":1,"id":"00b20f4e_a3688e5c","side":"PARENT","line":365,"updated":"2026-05-07 01:22:08.000000000","message":"deleting a container does not need the request’s ``X-Backend-Storage-Policy-Index``, but a bogus ``X-Backend-Storage-Policy-Index`` on a container DELETE would cause a 400 return, because ``get_and_validate_policy_index`` internally returns ``HTTPBadRequest`` on an invalid value. this is a probably a bug.\n\nAfter the refactoring, the value of ``X-Backend-Storage-Policy-Index`` will be ignored, which is correct.","commit_id":"a4cfcd869642fbc7e6fda68bffabfeb5cd1098b1"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"4ab1b7a88707f656de7ff2bff0091dbdd1d7d7af","unresolved":true,"context_lines":[{"line_number":362,"context_line":"            return HTTPInsufficientStorage(drive\u003ddrive, request\u003dreq)"},{"line_number":363,"context_line":"        # policy index is only relevant for delete_obj (and transitively for"},{"line_number":364,"context_line":"        # auto create accounts)"},{"line_number":365,"context_line":"        obj_policy_index \u003d self.get_and_validate_policy_index(req) or 0"},{"line_number":366,"context_line":"        broker \u003d self._get_container_broker(drive, part, account, container)"},{"line_number":367,"context_line":"        if obj:"},{"line_number":368,"context_line":"            self._maybe_autocreate(broker, req_timestamp, account,"}],"source_content_type":"text/x-python","patch_set":1,"id":"d8b7dbe9_66ebb86a","side":"PARENT","line":365,"in_reply_to":"00b20f4e_a3688e5c","updated":"2026-05-07 16:30:45.000000000","message":"should there be a unit test change to cover that?","commit_id":"a4cfcd869642fbc7e6fda68bffabfeb5cd1098b1"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"4acd52094fc44485523975c297c30342727260e8","unresolved":true,"context_lines":[{"line_number":362,"context_line":"            return HTTPInsufficientStorage(drive\u003ddrive, request\u003dreq)"},{"line_number":363,"context_line":"        # policy index is only relevant for delete_obj (and transitively for"},{"line_number":364,"context_line":"        # auto create accounts)"},{"line_number":365,"context_line":"        obj_policy_index \u003d self.get_and_validate_policy_index(req) or 0"},{"line_number":366,"context_line":"        broker \u003d self._get_container_broker(drive, part, account, container)"},{"line_number":367,"context_line":"        if obj:"},{"line_number":368,"context_line":"            self._maybe_autocreate(broker, req_timestamp, account,"}],"source_content_type":"text/x-python","patch_set":1,"id":"c852db1f_cbd8066b","side":"PARENT","line":365,"in_reply_to":"d8b7dbe9_66ebb86a","updated":"2026-05-07 16:55:13.000000000","message":"see 987726: sq? test X-Backend-Storage-Policy-Index ignored | https://review.opendev.org/c/openstack/swift/+/987726","commit_id":"a4cfcd869642fbc7e6fda68bffabfeb5cd1098b1"}]}
