)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"b594c257b0ba39d6a571e6d0d11c1677ac4b2f84","unresolved":true,"context_lines":[{"line_number":9,"context_line":"Add normalize_checksum_algorithm() to normalize S3 checksum"},{"line_number":10,"context_line":"algorithm names."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Hyphenated spellings such as SHA-256 now label as \u0027unknown\u0027"},{"line_number":13,"context_line":"instead of SHA256: S3 rejects them with InvalidRequest,"},{"line_number":14,"context_line":"so naming an algorithm the request was never allowed to use is"},{"line_number":15,"context_line":"misleading. Those requests are still visible in the metrics under"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"982e58bd_c8fc4f9d","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":59},"updated":"2026-08-27 10:35:43.000000000","message":"this might be correct but I don\u0027t think we need to make this off-topic change right now.\n\nThe goal was to break out a small patch to get the normalize function onto master since it has an existing use case. But \nyou\u0027re right that we shouldn\u0027t add the replace to the normalize function. We could still achieve that goal, without changing any behaviour.","commit_id":"0c3fed74ef270f7c0c9bdae5015eb1aecb4cd655"},{"author":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"change_message_id":"d417c22021d82af7482b212c2e77abaf0fecec99","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Add normalize_checksum_algorithm() to normalize S3 checksum"},{"line_number":10,"context_line":"algorithm names."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Hyphenated spellings such as SHA-256 now label as \u0027unknown\u0027"},{"line_number":13,"context_line":"instead of SHA256: S3 rejects them with InvalidRequest,"},{"line_number":14,"context_line":"so naming an algorithm the request was never allowed to use is"},{"line_number":15,"context_line":"misleading. Those requests are still visible in the metrics under"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5018aab8_d1cfd5f9","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":59},"in_reply_to":"982e58bd_c8fc4f9d","updated":"2026-08-27 17:38:56.000000000","message":"Yea better for a follow up patch in the future","commit_id":"0c3fed74ef270f7c0c9bdae5015eb1aecb4cd655"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"change_message_id":"2e8debc7a922bdf591a9bb98deafdd6de43abe0e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"18b9b41e_3e103864","updated":"2026-08-27 05:57:41.000000000","message":"This is pulled out from 1002405: s3api: Checksum Persistence on CreateMultipartUpload and UploadPart | https://review.opendev.org/c/openstack/swift/+/1002405","commit_id":"0c3fed74ef270f7c0c9bdae5015eb1aecb4cd655"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"b594c257b0ba39d6a571e6d0d11c1677ac4b2f84","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"609f3d85_134aa2d9","updated":"2026-08-27 10:35:43.000000000","message":"sorry @Nate we may have got our wires crossed on this idea. If a simpler version of this patch (no behavioural change) can be placed at the start of your patch chain then it could merge, otherwise it may not be worth separating.","commit_id":"0c3fed74ef270f7c0c9bdae5015eb1aecb4cd655"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"17aee3d63eeee9492b9e71685ace4586e890c0f8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"55d36873_11466045","updated":"2026-08-28 11:46:45.000000000","message":"rebased to move closer to master; this is a small change but it\u0027s one less patch in the persistence chain of we can merge this sooner.\n\npulled the helper function addition into this patch","commit_id":"4ff57666f016d4054a46dc2dcaa3ca2ad7ed4766"}],"swift/common/middleware/s3api/s3api.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"b594c257b0ba39d6a571e6d0d11c1677ac4b2f84","unresolved":true,"context_lines":[{"line_number":183,"context_line":"# https://docs.aws.amazon.com/AmazonS3/latest/API/API_Object.html#AmazonS3-Type-Object-ChecksumAlgorithm"},{"line_number":184,"context_line":"# https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html"},{"line_number":185,"context_line":"# The docs are unclear whether the header value is the (un-)hyphenated form,"},{"line_number":186,"context_line":"# but S3 only accepts the unhyphenated one, so hyphenated spellings label as"},{"line_number":187,"context_line":"# \u0027unknown\u0027."},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"# algorithms for x-amz-checksum-algorithm/ x-amz-sdk-checksum-algorithm"},{"line_number":190,"context_line":"WELL_KNOWN_CHECKSUM_ALGORITHMS \u003d ("}],"source_content_type":"text/x-python","patch_set":1,"id":"f98dd001_79bfaf89","line":187,"range":{"start_line":186,"start_character":44,"end_line":187,"end_character":11},"updated":"2026-08-27 10:35:43.000000000","message":"that may be better but I don\u0027t know that we need to fix that right now. I\u0027d prefer the scope of this patch to be purely \"add a normalize_checksum_algortihm helper function\"","commit_id":"0c3fed74ef270f7c0c9bdae5015eb1aecb4cd655"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"b594c257b0ba39d6a571e6d0d11c1677ac4b2f84","unresolved":true,"context_lines":[{"line_number":182,"context_line":"# https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html"},{"line_number":183,"context_line":"# https://docs.aws.amazon.com/AmazonS3/latest/API/API_Object.html#AmazonS3-Type-Object-ChecksumAlgorithm"},{"line_number":184,"context_line":"# https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html"},{"line_number":185,"context_line":"# The docs are unclear whether the header value is the (un-)hyphenated form,"},{"line_number":186,"context_line":"# but S3 only accepts the unhyphenated one, so hyphenated spellings label as"},{"line_number":187,"context_line":"# \u0027unknown\u0027."},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"# algorithms for x-amz-checksum-algorithm/ x-amz-sdk-checksum-algorithm"},{"line_number":190,"context_line":"WELL_KNOWN_CHECKSUM_ALGORITHMS \u003d ("}],"source_content_type":"text/x-python","patch_set":1,"id":"dd0406cb_87735302","line":187,"range":{"start_line":185,"start_character":2,"end_line":187,"end_character":12},"updated":"2026-08-27 10:35:43.000000000","message":"the existing comment was IMHO a little out of context. I think this would be better at line 388 i.e. right where we deduce the algorithm label value.","commit_id":"0c3fed74ef270f7c0c9bdae5015eb1aecb4cd655"},{"author":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"change_message_id":"d417c22021d82af7482b212c2e77abaf0fecec99","unresolved":false,"context_lines":[{"line_number":182,"context_line":"# https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html"},{"line_number":183,"context_line":"# https://docs.aws.amazon.com/AmazonS3/latest/API/API_Object.html#AmazonS3-Type-Object-ChecksumAlgorithm"},{"line_number":184,"context_line":"# https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html"},{"line_number":185,"context_line":"# The docs are unclear whether the header value is the (un-)hyphenated form,"},{"line_number":186,"context_line":"# but S3 only accepts the unhyphenated one, so hyphenated spellings label as"},{"line_number":187,"context_line":"# \u0027unknown\u0027."},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"# algorithms for x-amz-checksum-algorithm/ x-amz-sdk-checksum-algorithm"},{"line_number":190,"context_line":"WELL_KNOWN_CHECKSUM_ALGORITHMS \u003d ("}],"source_content_type":"text/x-python","patch_set":1,"id":"c06d7256_bd6567c8","line":187,"range":{"start_line":185,"start_character":2,"end_line":187,"end_character":12},"in_reply_to":"dd0406cb_87735302","updated":"2026-08-27 17:38:56.000000000","message":"Yes I think so, we can add it later","commit_id":"0c3fed74ef270f7c0c9bdae5015eb1aecb4cd655"},{"author":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"change_message_id":"d417c22021d82af7482b212c2e77abaf0fecec99","unresolved":false,"context_lines":[{"line_number":183,"context_line":"# https://docs.aws.amazon.com/AmazonS3/latest/API/API_Object.html#AmazonS3-Type-Object-ChecksumAlgorithm"},{"line_number":184,"context_line":"# https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html"},{"line_number":185,"context_line":"# The docs are unclear whether the header value is the (un-)hyphenated form,"},{"line_number":186,"context_line":"# but S3 only accepts the unhyphenated one, so hyphenated spellings label as"},{"line_number":187,"context_line":"# \u0027unknown\u0027."},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"# algorithms for x-amz-checksum-algorithm/ x-amz-sdk-checksum-algorithm"},{"line_number":190,"context_line":"WELL_KNOWN_CHECKSUM_ALGORITHMS \u003d ("}],"source_content_type":"text/x-python","patch_set":1,"id":"6ee6e64c_9be8e1c9","line":187,"range":{"start_line":186,"start_character":44,"end_line":187,"end_character":11},"in_reply_to":"f98dd001_79bfaf89","updated":"2026-08-27 17:38:56.000000000","message":"Agreed","commit_id":"0c3fed74ef270f7c0c9bdae5015eb1aecb4cd655"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"ff58d519e7aa46d2ede8aef91bf91e1193d2e844","unresolved":true,"context_lines":[{"line_number":385,"context_line":"                    label_val \u003d \u0027unknown\u0027"},{"line_number":386,"context_line":"            elif hdr_key in (\u0027x-amz-checksum-algorithm\u0027,"},{"line_number":387,"context_line":"                             \u0027x-amz-sdk-checksum-algorithm\u0027):"},{"line_number":388,"context_line":"                hdr_val_normalised \u003d normalize_checksum_algorithm(hdr_val)"},{"line_number":389,"context_line":"                if hdr_val_normalised in WELL_KNOWN_CHECKSUM_ALGORITHMS:"},{"line_number":390,"context_line":"                    label_val \u003d hdr_val_normalised"},{"line_number":391,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"097250e9_ed1d282b","line":388,"updated":"2026-08-27 10:15:55.000000000","message":"if normalize_checksum_algorithm isn\u0027t changing then we need to keep the ``replace``","commit_id":"0c3fed74ef270f7c0c9bdae5015eb1aecb4cd655"},{"author":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"change_message_id":"f76dea7cac16a598ace6dcd6afc9084045407019","unresolved":false,"context_lines":[{"line_number":385,"context_line":"                    label_val \u003d \u0027unknown\u0027"},{"line_number":386,"context_line":"            elif hdr_key in (\u0027x-amz-checksum-algorithm\u0027,"},{"line_number":387,"context_line":"                             \u0027x-amz-sdk-checksum-algorithm\u0027):"},{"line_number":388,"context_line":"                hdr_val_normalised \u003d normalize_checksum_algorithm(hdr_val)"},{"line_number":389,"context_line":"                if hdr_val_normalised in WELL_KNOWN_CHECKSUM_ALGORITHMS:"},{"line_number":390,"context_line":"                    label_val \u003d hdr_val_normalised"},{"line_number":391,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"4cd93b9f_f0d77914","line":388,"in_reply_to":"097250e9_ed1d282b","updated":"2026-08-27 17:39:04.000000000","message":"Done","commit_id":"0c3fed74ef270f7c0c9bdae5015eb1aecb4cd655"}]}
