)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"change_message_id":"90f2e1fd34f797ae9f42d78b30b4fc05ae6aa53c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"8f8439cb_ef460dd3","updated":"2026-08-05 15:39:50.000000000","message":"recheck","commit_id":"354cf6546ddc32e7dd01a7339727351c1071b19a"},{"author":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"change_message_id":"e7958d1316860a434c227bd02ad5af4062970c15","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"aa622a44_06420ff1","updated":"2026-08-05 22:43:26.000000000","message":"recheck\n\nhttps://zuul.opendev.org/t/openstack/buildset/21931a6dcfff4fbba4ffdc9b20e74fbb\nNode failure... hmmmmmm","commit_id":"dddd2ca07455aa467956409e9686bf469503c2b8"},{"author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"change_message_id":"61d4c477657ac0643afab8e8b71eb98eb78cc999","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"d422da4f_55d27ae5","updated":"2026-08-07 11:22:52.000000000","message":"recheck\n\nUnrelated to this change: 2026-08-06 23:52:02.453960 | controller | {0} openstack.tests.functional.cloud.test_project_cleanup.TestProjectCleanup.test_block_storage_cleanup [51.525538s] ... FAILED","commit_id":"4856fcb0b3ae081fc2ae00a1b9041b03c87c09fa"},{"author":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"change_message_id":"397cdff013c5df8241ef97f847d0dbfc9d2c40ad","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"fa9496eb_eec61798","updated":"2026-08-21 21:41:19.000000000","message":"FYI this has been added to the patch\n1001706: s3api: don\u0027t copy all s3api sysmeta when copying objects | https://review.opendev.org/c/openstack/swift/+/1001706\n\nIf (or maybe the better word is \u0027when\u0027) the ^^^^^^ patch is added\nbefore this is merged. This will be dropped and the chain will be rebased on top of master, ideally no big code changes 🤞","commit_id":"0d1672c5f984526b1aefff4c11fa8b216d404e2e"}],"swift/common/middleware/copy.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"36d252c54b2b879827b74cf27ec6ec2821d14aef","unresolved":true,"context_lines":[{"line_number":515,"context_line":"                hook_completed \u003d True"},{"line_number":516,"context_line":"            finally:"},{"line_number":517,"context_line":"                if not hook_completed:"},{"line_number":518,"context_line":"                    close_if_possible(source_resp.app_iter)"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        # Create response headers for PUT response"},{"line_number":521,"context_line":"        resp_headers \u003d self._create_response_headers(source_path,"}],"source_content_type":"text/x-python","patch_set":17,"id":"34a4c8af_ed2ac32d","line":518,"updated":"2026-08-17 16:23:34.000000000","message":"more idiomatic would be:\n\n```\ntry:\n    copy_source_hook(sink_req)\nexcept HTTPException:\n    close_if_possible(source_resp.app_iter)\n```","commit_id":"169f89a1e445362370298f66eef0e9848ea107f8"},{"author":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"change_message_id":"5d662af76f6b69f184f8b6bb8afcd8e435abe076","unresolved":false,"context_lines":[{"line_number":515,"context_line":"                hook_completed \u003d True"},{"line_number":516,"context_line":"            finally:"},{"line_number":517,"context_line":"                if not hook_completed:"},{"line_number":518,"context_line":"                    close_if_possible(source_resp.app_iter)"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        # Create response headers for PUT response"},{"line_number":521,"context_line":"        resp_headers \u003d self._create_response_headers(source_path,"}],"source_content_type":"text/x-python","patch_set":17,"id":"db6c235d_e6b6a5b4","line":518,"in_reply_to":"2a4d2a14_7b147be6","updated":"2026-08-20 20:40:09.000000000","message":"Done","commit_id":"169f89a1e445362370298f66eef0e9848ea107f8"},{"author":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"change_message_id":"6179185f6fd0cb0d305b6f138dcd3d4c8e336202","unresolved":true,"context_lines":[{"line_number":515,"context_line":"                hook_completed \u003d True"},{"line_number":516,"context_line":"            finally:"},{"line_number":517,"context_line":"                if not hook_completed:"},{"line_number":518,"context_line":"                    close_if_possible(source_resp.app_iter)"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        # Create response headers for PUT response"},{"line_number":521,"context_line":"        resp_headers \u003d self._create_response_headers(source_path,"}],"source_content_type":"text/x-python","patch_set":17,"id":"c6f011e7_86a9021f","line":518,"in_reply_to":"34a4c8af_ed2ac32d","updated":"2026-08-18 18:53:29.000000000","message":"Yes I think this is better, assuming all hooks throw `HTTPException` types, which I think the only caveat is in testing, which can easily be fixed","commit_id":"169f89a1e445362370298f66eef0e9848ea107f8"},{"author":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"change_message_id":"8c7e056cd2c7229b2a4f547cc75dc9968ca2e8dc","unresolved":true,"context_lines":[{"line_number":515,"context_line":"                hook_completed \u003d True"},{"line_number":516,"context_line":"            finally:"},{"line_number":517,"context_line":"                if not hook_completed:"},{"line_number":518,"context_line":"                    close_if_possible(source_resp.app_iter)"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        # Create response headers for PUT response"},{"line_number":521,"context_line":"        resp_headers \u003d self._create_response_headers(source_path,"}],"source_content_type":"text/x-python","patch_set":17,"id":"2a4d2a14_7b147be6","line":518,"in_reply_to":"c6f011e7_86a9021f","updated":"2026-08-19 19:26:48.000000000","message":"UPDATE we need to handle `Exception` class errors in general mainly because of when we copy a checksum from one object, we cannot pre-validate the source object\u0027s checksum algorithm (meaning that we actually can compute it) until we are in the copy hook. Which means we can get a `NotImplemented` which is not a `HTTPException`.\n\nI am going to revert this to use `Exception` instead of `HTTPException` but I\u0027ll keep the design like it was, just switching out the exception type is all","commit_id":"169f89a1e445362370298f66eef0e9848ea107f8"}]}
