)]}'
{"id":"openstack%2Fswift~1000863","triplet_id":"openstack%2Fswift~master~Iea80f2c81f7664180efa34f85af922f84af3daa3","project":"openstack/swift","branch":"master","topic":"s3-checksum-persistence","attention_set":{},"removed_from_attention_set":{"7847":{"account":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"last_update":"2026-08-28 11:58:12.000000000","reason":"Change was abandoned"}},"hashtags":[],"change_id":"Iea80f2c81f7664180efa34f85af922f84af3daa3","subject":"WIP s3api: add multi_upload manifest hook callback class","status":"ABANDONED","created":"2026-08-13 15:57:07.000000000","updated":"2026-08-28 11:58:12.000000000","total_comment_count":3,"unresolved_comment_count":2,"has_review_started":true,"meta_rev_id":"9da6da903f56e8ffb28b4e89fc00d4f60730145c","_number":1000863,"virtual_id_number":1000863,"owner":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"actions":{},"labels":{"Verified":{"recommended":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:check","value":1,"date":"2026-08-13 17:18:13.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","value":1,"default_value":0,"optional":true},"Code-Review":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"all":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"CC":[{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-08-13 17:18:13.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2026-08-13 18:58:20.000000000","updated_by":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"reviewer":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"state":"CC"}],"messages":[{"id":"4850d7bea8649a559f398bef8fcb869d81e67e50","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2026-08-13 15:57:07.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"d8cdde3a428f58cc3d0df1b563a033729ae47d87","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2026-08-13 16:58:07.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"9a07bcf49f83b5b5e242c6ca857cff0a6fcaa548","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-13 17:18:13.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/f499eb965152487398d699050d8982ad\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/bb5f12174b584eba82cc82af9da34d20 : SUCCESS in 10m 44s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/0b0b3034c2a1486db54f6b7e61789257 : SUCCESS in 9m 18s\n- grenade https://zuul.opendev.org/t/openstack/build/f051862d2e0d4c3a9edf1aa1ccd027c7 : SUCCESS in 1h 14m 55s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/0788464231c74ccb8cc8786f09d5bd59 : SUCCESS in 44m 13s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/ee1f3c0cec82492289757ed76e7df4d3 : SUCCESS in 50m 31s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/d82421d6ae6c456f9c96e2cc8e52c8aa : SUCCESS in 1h 04m 23s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/e36af7baa1ff438a892843b2f6599063 : SUCCESS in 20m 31s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/8b99678c310c428d88f3b36f255e761f : SUCCESS in 19m 54s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/f7260247b8434674bb7e345f8f6484cc : SUCCESS in 10m 31s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/a46936b886774d06860868024e7c03ee : SUCCESS in 6m 55s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/7c14a48f7889423790ac90cfeadaa59e : SUCCESS in 20m 49s\n- swift-tox-py310 https://zuul.opendev.org/t/openstack/build/bb833a4ce3b342dc8da1480e38d77582 : SUCCESS in 26m 27s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/9b855699ce5d4b51881b051f9dd088ed : SUCCESS in 11m 41s\n- swift-tox-py314 https://zuul.opendev.org/t/openstack/build/1de6c0f80e6a44149d5b3de542b9fd16 : SUCCESS in 21m 03s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/037a8312cfae4b76acc5e44f5177d916 : SUCCESS in 15m 45s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/80021c81f6d644718a2ab765e4c52e8d : SUCCESS in 15m 56s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/8f5fc6d06ca4466aa8566ff50948fdd2 : SUCCESS in 17m 14s\n- swift-tox-func-py39-centos-9-stream https://zuul.opendev.org/t/openstack/build/1d6bfc4433f74d4180f19851e19fc2ca : SUCCESS in 18m 34s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/faa4315b328e428b8993ba092120012f : SUCCESS in 8m 42s\n- swift-tox-func-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/a74c4281269b405c91375a7cf7b2fc66 : FAILURE in 8m 27s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/92460a6ad8d943f989c4b292d2415ede : SUCCESS in 11m 44s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/844a384cb5cc44d5a7a11f0f48712baa : SUCCESS in 1h 04m 52s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/1a7b56c8092e4661aad310b9ad060f91 : SUCCESS in 50m 40s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/07a8ebb437f44549beae5d2d34df7c78 : SUCCESS in 35m 16s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/cd1f3212676341a7b5bac338b2ad9c47 : SUCCESS in 32m 35s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/56b82fe9e56e4410ae569695a52141c5 : SUCCESS in 4m 06s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/2bd61cf8575f4e8b81d5df7e6e22f459 : SUCCESS in 9m 04s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/9a014f88bb8544bb8149e92af66befb7 : SUCCESS in 1h 07m 12s\n\nWarning:\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/zuul/zuul-jobs/playbooks/unittests/post.yaml for job swift-tox-func-ec-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml for job swift-tox-func-ec-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml for job swift-tox-func-ec-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml for job swift-tox-func-ec-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/zuul/zuul-jobs/playbooks/unittests/post.yaml for job swift-tox-func-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml for job swift-tox-func-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml for job swift-tox-func-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml for job swift-tox-func-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/zuul/zuul-jobs/playbooks/unittests/post.yaml for job swift-tox-func-encryption-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml for job swift-tox-func-encryption-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml for job swift-tox-func-encryption-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml for job swift-tox-func-encryption-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.","accounts_in_message":[],"_revision_number":1},{"id":"a8b8a9d28943ca04fe8f0e52beca9c8787874866","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-13 17:19:24.000000000","message":"Patch Set 1:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/ce74f26244544135bf0908b5e7b66233\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/ca8398c606a04105beafabb7d72fae8e : SUCCESS in 1h 03m 56s","accounts_in_message":[],"_revision_number":1},{"id":"0ca2853969e4ec05822c4bd6841747215a9b40ce","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2026-08-13 17:35:17.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"226b4e1acd9fbadc79249432bab53570294980c4","author":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"date":"2026-08-13 18:58:20.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"9da6da903f56e8ffb28b4e89fc00d4f60730145c","tag":"autogenerated:gerrit:abandon","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2026-08-28 11:58:12.000000000","message":"Abandoned\n\nthis idea made its way into https://review.opendev.org/c/openstack/swift/+/993193/128/swift/common/middleware/s3api/controllers/multi_upload.py","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"4f7878235c1af88a907d1ec4c1455e9756fed045","revisions":{"4f7878235c1af88a907d1ec4c1455e9756fed045":{"kind":"REWORK","_number":1,"created":"2026-08-13 15:57:07.000000000","uploader":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"ref":"refs/changes/63/1000863/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/63/1000863/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/63/1000863/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/63/1000863/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/63/1000863/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/63/1000863/1"}}},"commit":{"parents":[{"commit":"0b95488b21e984bd9b5aed9bc7c18be39648d83f","subject":"slo: Pass segment HEAD headers to manifest hook","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/0b95488b21e984bd9b5aed9bc7c18be39648d83f"}]}],"author":{"name":"Alistair Coles","email":"alistairncoles@gmail.com","date":"2026-08-13 15:48:54.000000000","tz":60},"committer":{"name":"Alistair Coles","email":"alistairncoles@gmail.com","date":"2026-08-13 15:53:56.000000000","tz":60},"subject":"WIP s3api: add multi_upload manifest hook callback class","message":"WIP s3api: add multi_upload manifest hook callback class\n\nTODO: improve unit tests\n\nReplace the manifest_hook function with a callback class.\n\nThe callback does not raise ErrorResponse exceptions. The callback is\ncalled from inside the SLO response iterator (heartbeat\u003don). Raising\nan exception would have an unpredictable outcome depending on the\ntiming w.r.t. SLO heartbeats and heartbeat forwarding in the\nUploadController.POST\u0027s own resp_iter. The callback therefore\nmaintains a list of ErrorResponse(s) and returns a single fixed\n\u0027manifest_error\u0027 to SLO if there are any errors. The manifest_error\nwill trigger SLO to send an error response body, from which the\nUploadController.POST\u0027s resp_iter can observe the manifest_error and\nthen re-write the response body using the recorded callback\nErrorResponse(s).\n\nThis pattern avoids having to encode each ErrorResponse as a\nmanifest_error for SLO to write into a response body, only for the\nUploadController.POST\u0027s resp_iter to decode the manifest_error and map\nit back to an ErrorResponse.\n\nThis patch anticipates future use cases where the manifest hook might\ndetect a greater variety of errors, for example checksum validation\nerrors.\n\nChange-Id: Iea80f2c81f7664180efa34f85af922f84af3daa3\nSigned-off-by: Alistair Coles \u003calistairncoles@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/4f7878235c1af88a907d1ec4c1455e9756fed045"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/4f7878235c1af88a907d1ec4c1455e9756fed045"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Verified\u003dMAX","label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Code-Review\u003dMAX","label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Workflow\u003dMAX","label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
