)]}'
{"id":"openstack%2Fswift~940165","triplet_id":"openstack%2Fswift~master~I318669d37d8862d548590c74f36b945ad3cb4281","project":"openstack/swift","branch":"master","topic":"p-footers-callback","attention_set":{},"removed_from_attention_set":{"7847":{"account":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"last_update":"2025-02-11 10:38:08.000000000","reason":"\u003cGERRIT_ACCOUNT_7847\u003e replied on the change","reason_account":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"}}},"hashtags":[],"change_id":"I318669d37d8862d548590c74f36b945ad3cb4281","subject":"Apply etag override header params to footer","status":"NEW","created":"2025-01-24 18:22:59.000000000","updated":"2025-02-11 15:19:40.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":false,"submittable":false,"total_comment_count":4,"unresolved_comment_count":3,"has_review_started":true,"meta_rev_id":"01413dd95c946046f66ea14efd17d931eca524e0","_number":940165,"virtual_id_number":940165,"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":[{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"tag":"autogenerated:zuul:check","value":1,"date":"2025-02-11 13:14:34.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":-2,"max":2},"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"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":{"rejected":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"all":[{"value":-1,"date":"2025-02-11 10:38:08.000000000","permitted_voting_range":{"min":-1,"max":1},"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"_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":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"CC":[{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2025-01-24 19:11:49.000000000","updated_by":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"reviewer":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"state":"CC"},{"updated":"2025-01-24 20:05:51.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"}],"messages":[{"id":"a964ff221c111f7e211068902317ead5d0a06b47","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2025-01-24 18:22:59.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"f547eef81e1251256d09b9d29aa1084f068ea179","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2025-01-24 18:23:18.000000000","message":"Patch Set 1: Workflow-1","accounts_in_message":[],"_revision_number":1},{"id":"95f77ee167452770328869ed51e367413e096c7f","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2025-01-24 19:11:49.000000000","message":"Patch Set 1:\n\n(3 comments)","accounts_in_message":[],"_revision_number":1},{"id":"600e2c36eedba0a6a96543dc48277a486c31a943","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-01-24 20:05:51.000000000","message":"Patch Set 1: Verified-1\n\n(1 comment)\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/b09da74f17c2465da51d4b95bdc38103\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/e6990f865f544f378b5eea3f465df586 : SUCCESS in 26m 59s\n- grenade https://zuul.opendev.org/t/openstack/build/3dd9af30827d40b48371663fb646d5b3 : SUCCESS in 47m 54s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/f50c30e0bc0c46219d0142499c24dbef : SUCCESS in 1h 34m 01s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/dbab4f4a02084c05bc1a99508ec08da0 : SUCCESS in 1h 15m 46s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/2bee493be3284e33b9072fbd9092cedf : SUCCESS in 1h 26m 36s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/22966ac4addf4f479348d6cb95ebe78b : SUCCESS in 16m 23s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/e38567db4d4941d8be38f9e89304e946 : SUCCESS in 21m 24s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/ce1b54f4269f41afbe04e87de413eeca : SUCCESS in 21m 26s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/a7782ea826af4abfa652fd6c87144e7a : SUCCESS in 6m 22s (non-voting)\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/6fa5be09e8ea4cdb86001d141dcf50fd : SUCCESS in 9m 36s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/31c0ece95d274c94bc8c72c751d2457c : SUCCESS in 29m 48s\n- swift-tox-py312 https://zuul.opendev.org/t/openstack/build/87741d52938046d295524858d61872a2 : SUCCESS in 20m 37s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/d87eb68183a94687af45cea94c985abb : SUCCESS in 14m 55s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/78839e5f415a442a9074db716c6b0947 : SUCCESS in 13m 37s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/f4f4cedc6e0d4dd5b6ac391d5ffe3219 : SUCCESS in 9m 44s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/94ebcea43fea464e875ae80f60dc7aa5 : SUCCESS in 20m 47s\n- swift-tox-func-s3api-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/8c3b76dad4dc4ee6b3fa5c36245ca30b : FAILURE in 13m 51s (non-voting)\n- swift-tox-func-s3api-tests-tempauth https://zuul.opendev.org/t/openstack/build/49879c38b0554c358fa6969c8d932f13 : SUCCESS in 7m 38s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/f906b8c6d5664106994eeaa5e8b61e67 : SUCCESS in 38m 09s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/141e9ad3d399482091551e6aeadd2cef : SUCCESS in 59m 07s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/714fab7c86b4455c9cc8b5db035ceead : SUCCESS in 26m 10s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/27d39a774c354ad9b8a2ff2d16636fcb : SUCCESS in 28m 48s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/b06c2b5ff3ab4859be9b663438caffcf : FAILURE in 3m 19s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/890d09bd837a4b638ed6a6c55f409509 : SUCCESS in 11m 04s\n- tempest-integrated-object-storage-ubuntu-jammy https://zuul.opendev.org/t/openstack/build/8265d25501304a3c91a814d09d8f06b2 : SUCCESS in 37m 29s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/dfd0b440c3074903bac61c144f1d3b90 : SUCCESS in 47m 45s","accounts_in_message":[],"_revision_number":1},{"id":"679defb42744ff839fa7812519d1ea01d2de93fc","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-01-24 23:45:13.000000000","message":"Patch Set 1:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/1fec2cb8fed3450c93e28955e8184d8b\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/56c9876d43424dd6850488a23c98457e : SUCCESS in 1h 22m 02s","accounts_in_message":[],"_revision_number":1},{"id":"6771e3c5bfa98e1fbcaafb81236653a42239113c","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2025-02-05 15:39:59.000000000","message":"Uploaded patch set 2.\n\nOutdated Votes:\n* Verified-1\n* Workflow-1\n","accounts_in_message":[],"_revision_number":2},{"id":"b735280274828af002694b0cc70c58e5b004829b","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2025-02-05 15:41:24.000000000","message":"Patch Set 2: Workflow-1\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"d0bb75b269a0da4d0223ffa5f148f501dacf9829","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-02-05 17:29:04.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/6c4a5efde9e1494ea13d3784c9e670c2\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/1e016a43226f4030a3f0072b5352ddc4 : SUCCESS in 5m 46s\n- grenade https://zuul.opendev.org/t/openstack/build/17d3c142c4f34a9e8487fd87f24ef735 : SUCCESS in 59m 54s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/2d38bffe4e12441388d50db6d3b9a503 : SUCCESS in 47m 49s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/df5a8c7ff5644b588685e428775e1a4d : SUCCESS in 51m 06s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/a61e3440106e420aad5e6b82fb800354 : SUCCESS in 50m 38s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/67122c62c0414f9b960d48f5e7822775 : SUCCESS in 19m 28s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/6ff77c1b2f6140b6a65caa167d74b896 : SUCCESS in 19m 27s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/db5ba586ed2547fe900915d87d4f45eb : SUCCESS in 22m 03s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/f7eb3167b7ec4d15a8b3cb76fae2dda9 : SUCCESS in 5m 38s (non-voting)\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/7bf7f32face64b5aab9ba00130fd6ed4 : SUCCESS in 17m 31s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/4219cb83f1b245a98c0b234153ccf745 : SUCCESS in 21m 21s\n- swift-tox-py312 https://zuul.opendev.org/t/openstack/build/21fea71074174aa78ce3a8b0f584c038 : SUCCESS in 34m 24s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/7a4a27129b05448d95d7bc2b1531c1b5 : SUCCESS in 16m 22s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/fd676ec76a2042919092b1b1b3c5c198 : SUCCESS in 13m 13s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/56a8ea40d7a349d29ed5048b72778eb6 : SUCCESS in 14m 53s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/83451431b94e47aa8fd35df37d0d2745 : SUCCESS in 7m 00s\n- swift-tox-func-s3api-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/268d8069624b4b0cbe6d209a0eaf6086 : FAILURE in 14m 35s (non-voting)\n- swift-tox-func-s3api-tests-tempauth https://zuul.opendev.org/t/openstack/build/a41eb3ba0efa4d8890e9ff953cce97ce : SUCCESS in 7m 33s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/6fd3c956cafe467fbe752c9805ae6396 : SUCCESS in 59m 54s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/d2ae8a37f24148fbaf4414bf295c749f : SUCCESS in 50m 22s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/42ea7ea9f3ce45f197381a90156cee96 : SUCCESS in 47m 22s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/51d474091ec34624abf25088d84dbdea : SUCCESS in 21m 32s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/36eecb1cbeb347aab35181aa8ef145a4 : SUCCESS in 4m 11s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/f4dc98bde0f8408b82e88620ccf5b838 : SUCCESS in 18m 26s\n- tempest-integrated-object-storage-ubuntu-jammy https://zuul.opendev.org/t/openstack/build/cfe8f4f8b047457182983034d780913c : SUCCESS in 1h 01m 01s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/a76cb7be6acc4c58ae52a6d0f7ec833c : SUCCESS in 1h 21m 20s","accounts_in_message":[],"_revision_number":2},{"id":"bb7c2c7fc57eb4d21db8eb6bc812516dae4d10cd","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-02-05 17:36:48.000000000","message":"Patch Set 2:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/e2705771d60f4e0fbe6de5aa1e2bbe1c\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/551cba7b3f89415ea4dafc172baf392c : SUCCESS in 1h 54m 36s","accounts_in_message":[],"_revision_number":2},{"id":"de31401b80346abeafa726a607b1822d1f884fd5","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2025-02-07 18:20:05.000000000","message":"Uploaded patch set 3.\n\nOutdated Votes:\n* Verified+1\n* Workflow-1\n","accounts_in_message":[],"_revision_number":3},{"id":"c8dfde23fc49aac7f140a2c87e2b363bb07ecc5c","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2025-02-07 18:20:28.000000000","message":"Patch Set 3: Workflow-1","accounts_in_message":[],"_revision_number":3},{"id":"f461df646403c7236c3dd7a3bec6566944603b71","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-02-07 19:42:14.000000000","message":"Patch Set 3: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/0888e28d80cd4cd8aaf41f8669f69647\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/1df7e3454ec947e7b84db4c6e1900359 : SUCCESS in 9m 04s\n- grenade https://zuul.opendev.org/t/openstack/build/b74dea2311ee46cebe7221e17460b9ba : SUCCESS in 1h 15m 19s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/692cc2e15c33428ebbe437a1ad7415f5 : SUCCESS in 45m 50s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/e3115b184eba48df92d119427b1629a0 : SUCCESS in 37m 56s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/616a11626b0e4a2881aed0ca0148d2e3 : SUCCESS in 50m 17s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/627bbe24c01e431b9ec26a5bb41f5718 : SUCCESS in 18m 02s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/2377bf4eac18430ca6d4385c7b9984ee : SUCCESS in 19m 09s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/a89eefac467f41ecb40c28ba9100344f : SUCCESS in 13m 05s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/a1b2792a1e744f8b93b9ddee478680ce : SUCCESS in 5m 11s (non-voting)\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/5ce6ea4fd7b44d0d992b950d75c7272a : FAILURE in 15m 47s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/dc62001526ef47cf868f2c544673ce5d : FAILURE in 20m 22s\n- swift-tox-py312 https://zuul.opendev.org/t/openstack/build/b5ffad67c9054dd89395540b1478da75 : FAILURE in 23m 22s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/a196c6ac59214a5095c15a4fce431317 : SUCCESS in 14m 49s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/46c7df80fa52443dbca7959bfd56d5ca : SUCCESS in 16m 03s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/12eefcf5aae84b93959b4bf441814735 : SUCCESS in 14m 54s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/1a15146bd89c4b34a6c35f1a81ee718e : SUCCESS in 9m 11s\n- swift-tox-func-s3api-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/f04f53a8a1b14122acd02b20a773ce59 : FAILURE in 20m 41s (non-voting)\n- swift-tox-func-s3api-tests-tempauth https://zuul.opendev.org/t/openstack/build/ccc2b0f3edc043b1aee32ba59a46eb23 : SUCCESS in 7m 04s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/025a5a95bae14cd5ac125c4a2c6ebbac : FAILURE in 1h 04m 10s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/a5eae86fcdf441c0b984b8e96a4b0dd4 : SUCCESS in 36m 54s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/cb287a96799f4a4a882ec7cf56d436a8 : SUCCESS in 50m 56s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/7bbe9e100743483e95a9d95fa8961f81 : FAILURE in 21m 25s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/d850718e6ed24d3d95d09b058d096d3e : SUCCESS in 5m 36s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/e6658e9e13674917b8cd5f01393e7fcf : FAILURE in 26m 51s\n- tempest-integrated-object-storage-ubuntu-jammy https://zuul.opendev.org/t/openstack/build/d70abd3dccbf4aa0b58ada6188d574dc : SUCCESS in 35m 08s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/731b899f858f4720801b6a41ff59e473 : SUCCESS in 1h 06m 31s","accounts_in_message":[],"_revision_number":3},{"id":"9c643d0147fccc1223dbebfbff4d2713711a1003","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-02-07 20:14:01.000000000","message":"Patch Set 3:\n\nBuild failed (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/ddeb1477f44f44cb9eafcf6f7f1d516d\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/1184e062a48a448ba0c51b0248263a38 : FAILURE in 1h 51m 28s","accounts_in_message":[],"_revision_number":3},{"id":"4c52f126d19bc2f6b9c2c98f9a3ccfcfdfc7b915","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2025-02-10 14:48:07.000000000","message":"Uploaded patch set 4.\n\nOutdated Votes:\n* Verified-1\n* Workflow-1\n","accounts_in_message":[],"_revision_number":4},{"id":"9ddbbfb52c1d435dc60e3dc23b6d830f6110e3fb","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-02-10 16:06:25.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/23e31055763f42fa9227f22a939f86e2\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/f74cc3441ecc4facbf6d59e1050fc88a : SUCCESS in 8m 59s\n- grenade https://zuul.opendev.org/t/openstack/build/6bea9056c73f4044a0fae915f24f31e7 : SUCCESS in 1h 02m 18s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/9f0a88cfd7844a31b21b3c58667f75bd : SUCCESS in 54m 02s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/c2629ed7399f4c4eaa9ff2f2e7e42182 : SUCCESS in 55m 07s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/b86097a74d1a44e482ba7174bffd60a0 : SUCCESS in 53m 43s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/b47f6ceb96994a5982e60e4fd7b970de : SUCCESS in 16m 00s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/d6fc6b130cf7489598be2b8d55d34707 : SUCCESS in 20m 52s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/b4b72acc41af4dc289c2d6ed6ef1f73f : SUCCESS in 21m 06s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/780b2e60a2ed403297b3ff9f14ebb8a5 : SUCCESS in 5m 26s (non-voting)\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/6b5e6d2f81c8467fb8750c9f639ad088 : SUCCESS in 19m 08s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/8e0f02f01bf54198bbf4aca81155afa8 : SUCCESS in 22m 35s\n- swift-tox-py312 https://zuul.opendev.org/t/openstack/build/ecb53687c4c74216b1dfe8798f457e1f : SUCCESS in 29m 35s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/f703fdbef3ba4a2e9098690fc10c3fec : SUCCESS in 13m 46s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/aa328a5b932644ec9bf8ad8afee26177 : SUCCESS in 13m 51s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/af5b59b6c1914a0f9695609739a12d7d : SUCCESS in 16m 39s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/8568926865f84a7689dc097e36a60df6 : SUCCESS in 6m 45s\n- swift-tox-func-s3api-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/9295a944b20b41dfa5a13d5c7a683722 : FAILURE in 13m 56s (non-voting)\n- swift-tox-func-s3api-tests-tempauth https://zuul.opendev.org/t/openstack/build/f29f5ffba7cc4f0d8f6ae3cf4dc9a09e : SUCCESS in 7m 07s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/ed3f9589c8d84824836a389ec3407d18 : SUCCESS in 52m 25s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/90cc806739a649baa4fc6cbe31f43a94 : SUCCESS in 29m 34s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/c4f9d6f74cd148c2bce55889cea96b6b : SUCCESS in 33m 26s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/41f097f4155e410fafaa598a860e6836 : SUCCESS in 21m 44s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/99a6c1d944804e4b9d82b5b3b3458b4c : SUCCESS in 4m 17s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/0c84948979a64502ab586ebe7fc10547 : SUCCESS in 18m 44s\n- tempest-integrated-object-storage-ubuntu-jammy https://zuul.opendev.org/t/openstack/build/ed6575fb1bdf4b5e9d4975bbdd88b8ef : SUCCESS in 57m 03s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/89f668da6c854e5392a6c59e10fb48f4 : SUCCESS in 59m 02s","accounts_in_message":[],"_revision_number":4},{"id":"139461d8afd782a749502f4b5b087763af3f43cb","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-02-10 16:23:22.000000000","message":"Patch Set 4:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/42008a212616493f97161ad0e9ed2a6a\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/4b15b456e4494e1eab29298b5b4e19d1 : SUCCESS in 1h 33m 17s","accounts_in_message":[],"_revision_number":4},{"id":"a2ab349a8db91c359e4956ad196e302a6d44782e","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2025-02-11 10:28:20.000000000","message":"Uploaded patch set 5.\n\nOutdated Votes:\n* Verified+1\n","accounts_in_message":[],"_revision_number":5},{"id":"cfcfb6dde9f350906419bc39566ff6cc3f1dad7c","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2025-02-11 10:36:10.000000000","message":"Uploaded patch set 6: Patch Set 5 was rebased.","accounts_in_message":[],"_revision_number":6},{"id":"f09ee8ccd76d36e373888c9097f9366bcefff9ff","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2025-02-11 10:38:08.000000000","message":"Patch Set 6: Workflow-1","accounts_in_message":[],"_revision_number":6},{"id":"cf548ead61eb569cb09cab076229bba7f54842f1","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-02-11 13:14:34.000000000","message":"Patch Set 6: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/55bc58061866485a94c1efe5757f4be9\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/18484378280345fc811d30981f626da7 : SUCCESS in 8m 16s\n- grenade https://zuul.opendev.org/t/openstack/build/6aca21ea8bde4902b946fbf41708fc0d : SUCCESS in 1h 17m 14s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/4f5c1d4c7dea4b4b97862cf3b222e8ed : SUCCESS in 1h 06m 13s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/b75fc0bae8cb4ea4951031bd1aba90fb : SUCCESS in 46m 40s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/d644184002874422ad8d7279fc50ba57 : SUCCESS in 1h 30m 29s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/1aba42bf0e1e4bb0a7e57d2193104424 : SUCCESS in 13m 10s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/a7c7cb2ba2a0490a9f7a07b76de1889e : SUCCESS in 17m 40s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/b474dd01fbd44a32af2aee00373fa2a2 : SUCCESS in 20m 22s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/3722f9915afd41c6808f8dfe73b0931b : SUCCESS in 6m 46s (non-voting)\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/8f9ca93265f2478a8058be886e7493a3 : SUCCESS in 17m 58s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/83a7a8b17f8946648e0e4d6cda2d6a25 : SUCCESS in 11m 37s\n- swift-tox-py312 https://zuul.opendev.org/t/openstack/build/a6635b31a24c482a80c7af4fe6b0500f : SUCCESS in 15m 08s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/8dc1caa1dd8e48a498640405a6c159c0 : SUCCESS in 10m 02s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/1b5261e94c62429590aa97b647cec7b9 : SUCCESS in 14m 17s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/41c6f77eea924c7da50e8b34249a7dc8 : SUCCESS in 15m 31s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/f2cf5adafb444262b4427ba2bf53ea03 : SUCCESS in 6m 56s\n- swift-tox-func-s3api-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/7ccdec8375ac44ac80165ff5022bb05e : FAILURE in 12m 22s (non-voting)\n- swift-tox-func-s3api-tests-tempauth https://zuul.opendev.org/t/openstack/build/0c215062df54416993da013a99f83531 : SUCCESS in 7m 48s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/7d9793a6746a4bd3b98098adc2fe0bfa : SUCCESS in 54m 49s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/a20ad3a62c6d4b0fae7b1f1af2e8bb8a : SUCCESS in 47m 32s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/bd2fe70d1ef840ae8df77d34fefd9540 : SUCCESS in 27m 42s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/626f567c09554a109b6515fbd6a5f58e : SUCCESS in 16m 28s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/da6c8f69c3e940908b52ebce776271ba : SUCCESS in 3m 45s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/fca93c6db140426e80f7f8b6d98ee8dc : SUCCESS in 11m 37s\n- tempest-integrated-object-storage-ubuntu-jammy https://zuul.opendev.org/t/openstack/build/f384dfaf88cb4b5c911494bce0ee10b9 : SUCCESS in 47m 46s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/a04d9ac8ed40497b81b9cb0cf08093f8 : SUCCESS in 39m 30s","accounts_in_message":[],"_revision_number":6},{"id":"01413dd95c946046f66ea14efd17d931eca524e0","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-02-11 15:19:40.000000000","message":"Patch Set 6:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/4c8e9ebe50b34be0814fb59718e42465\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/6921371a4d7a4e5196b7eaa8d6528eac : SUCCESS in 1h 54m 51s","accounts_in_message":[],"_revision_number":6}],"current_revision_number":6,"current_revision":"01d114ff9d5933572ea2839a2a179580a2399c20","revisions":{"1646bba39703b9e72001e43c3ce56d0b5b7d778c":{"kind":"REWORK","_number":1,"created":"2025-01-24 18:22:59.000000000","uploader":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"ref":"refs/changes/65/940165/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/65/940165/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/65/940165/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/65/940165/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/65/940165/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/65/940165/1"}}},"commit":{"parents":[{"commit":"ff8ec22d9591fc5d9a8ce22b9c15e471ecce2462","subject":"Refactor some file-like iters as utils.InputProxy subclasses","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/ff8ec22d9591fc5d9a8ce22b9c15e471ecce2462"}]}],"author":{"name":"Alistair Coles","email":"alistairncoles@gmail.com","date":"2025-01-23 15:03:09.000000000","tz":0},"committer":{"name":"Alistair Coles","email":"alistairncoles@gmail.com","date":"2025-01-24 18:20:37.000000000","tz":0},"subject":"WIP Encapsulate etag override header manipulation","message":"WIP Encapsulate etag override header manipulation\n\nWe do this etag override header manipulation in a few places and its\ngnarly, particularly if we end up calling back to\nfooters_callbacks. Try to encapsulate it in some helpers.\n\nChange-Id: I318669d37d8862d548590c74f36b945ad3cb4281\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/1646bba39703b9e72001e43c3ce56d0b5b7d778c"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/1646bba39703b9e72001e43c3ce56d0b5b7d778c"}]},"branch":"refs/heads/master"},"5dab7ab32919a5f2b72964192bb7106ce2537000":{"kind":"REWORK","_number":2,"created":"2025-02-05 15:39:59.000000000","uploader":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"ref":"refs/changes/65/940165/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/65/940165/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/65/940165/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/65/940165/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/65/940165/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/65/940165/2"}}},"commit":{"parents":[{"commit":"1c94e39de599c683667bc5e883ee06e66a13cbdc","subject":"Add etag override header helpers","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/1c94e39de599c683667bc5e883ee06e66a13cbdc"}]}],"author":{"name":"Alistair Coles","email":"alistairncoles@gmail.com","date":"2025-01-23 15:03:09.000000000","tz":0},"committer":{"name":"Alistair Coles","email":"alistairncoles@gmail.com","date":"2025-02-05 14:45:44.000000000","tz":0},"subject":"Apply etag override header params to footer","message":"Apply etag override header params to footer\n\nMiddlewares can install a callback to update PUT request footers. If\nthey do so they may set an\nX-Object-Sysmeta-Container-Update-Override-Etag (a.k.a. \"etag\noverride\") *footer* which would replace any etag override *header* set\nby other middlewares. In doing so, params that middlewares have\nappended to the etag override header would be lost.\n\nFor example, middleware X could replace, by setting an etag override\nfooter, not only the etag override header set by another middleware Y,\nbut also any params that annotated Y\u0027s etag override header. This\nwould lead to etag override params that are significant to Y being\nlost. This could be avoided if every middleware\u0027s footers callback is\ncareful to transfer them from the header to the footer. In general\nthis is hard for middlewares to do correctly because they may not have\naccess to the final etag override header in the request environ that\nreaches the proxy app.\n\nThis patch therefore modifies the proxy obj controller to ensure that\netag override header params are copied to an etag override footer. It\nis therefore not necessary for most other middlewares to do the same,\nbecause the proxy obj controller will apply all etag override header\nparams as the request is completing.\n\nHowever, the encrypter middleware does need some modification. The\nencrypter already needs to transfer etag override *header* params to\nthe encrypted etag override *footer* that it sets in its footers\ncallback, so that etag override header params are encrypted. The\nencrypter previously did this only if no other middleware had set an\netag override footer, but not if it found an existing etag override\nfooter set by another middleware.\n\nThis patch therefore also modifies the encrypter to similarly ensure\nthat etag override header params are always copied to an etag override\nfooter. The encrypter also removes any etag override *header* to\nprevent the proxy obj controller copying the unencrypted value over\nthe encrypted footer.\n\nPreviously, the encrypted etag was, in order of preference, an etag\noverride value previously set by another middleware in footers, or an\netag override value in the headers received by the encrypter, or the\nhexdigest of the md5 of the request body. This patch also changes the\norder of preference for the override etag value: an etag override\nvalue in the headers received by the encrypter is now preferred over\nan etag override value previously set by another middleware in\nfooters. In general, middlewares that \u0027know better\u0027 replace etag\noverride values set by previous middlewares as a request progresses\nthrough the middlewares in order. Allowing any middleware to undo this\nin a footers callback breaks that predictable ordering.\n\nThe author is not aware of any middleware other than the encrypter\nthat does currently set an etag override footer (but has seen it\nproposed), so this fix is preventitive.\n\nChange-Id: I318669d37d8862d548590c74f36b945ad3cb4281\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/5dab7ab32919a5f2b72964192bb7106ce2537000"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/5dab7ab32919a5f2b72964192bb7106ce2537000"}]},"branch":"refs/heads/master"},"2c48a547f44a524870e56f4cd32b47926fcf9ad2":{"kind":"REWORK","_number":3,"created":"2025-02-07 18:20:05.000000000","uploader":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"ref":"refs/changes/65/940165/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/65/940165/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/65/940165/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/65/940165/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/65/940165/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/65/940165/3"}}},"commit":{"parents":[{"commit":"1c94e39de599c683667bc5e883ee06e66a13cbdc","subject":"Add etag override header helpers","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/1c94e39de599c683667bc5e883ee06e66a13cbdc"}]}],"author":{"name":"Alistair Coles","email":"alistairncoles@gmail.com","date":"2025-01-23 15:03:09.000000000","tz":0},"committer":{"name":"Alistair Coles","email":"alistairncoles@gmail.com","date":"2025-02-07 18:16:01.000000000","tz":0},"subject":"Apply etag override header params to footer","message":"Apply etag override header params to footer\n\nMiddlewares can install a callback to update PUT request footers. If\nthey do so they may set an\nX-Object-Sysmeta-Container-Update-Override-Etag (a.k.a. \"etag\noverride\") *footer* which would replace any etag override *header* set\nby other middlewares. In doing so, params that middlewares have\nappended to the etag override header would be lost.\n\nFor example, middleware X could replace, by setting an etag override\nfooter, not only the etag override value set by another middleware Y,\nbut also any params that annotated Y\u0027s etag override value. This\nwould lead to etag override params that are significant to Y being\nlost. This could be avoided if every middleware\u0027s footers callback is\ncareful to transfer them from the header to the footer. In general\nthis is hard for middlewares to do correctly because they may not have\naccess to the final etag override header in the request environ that\nreaches the proxy app.\n\nThis patch therefore modifies the proxy obj controller to ensure that\netag override header params are always copied to an etag override\nfooter, if there is one. It is therefore not necessary for most other\nmiddlewares to do the same, because the proxy obj controller will\napply all etag override header params as the request is completing.\n\nHowever, the encrypter middleware does need some modification. The\nencrypter already needs to transfer etag override *header* params to\nthe encrypted etag override *footer* that it sets in its footers\ncallback, so that etag override header params are encrypted. The\nencrypter previously did this only if no other middleware had set an\netag override footer, but not if it found an existing etag override\nfooter set by another middleware.\n\nThis patch therefore also modifies the encrypter to similarly ensure\nthat etag override header params are always copied to an etag override\nfooter. The encrypter will create an etag override *footer* if none\nexists, otherwise it will update the existing footer. The encrypter\nnow also removes any etag override *header* to prevent the proxy obj\ncontroller copying the unencrypted value over the encrypted footer.\n\nPreviously, the encrypted etag was, in order of preference, an etag\noverride value previously set by another middleware in footers, or an\netag override value in the headers received by the encrypter, or the\nhexdigest of the md5 of the request body. This patch changes the order\nof preference for the override etag value: an etag override value in\nthe headers received by the encrypter is now preferred over an etag\noverride value previously set by another middleware in footers. In\ngeneral, middlewares that \u0027know better\u0027 replace etag override values\nset by previous middlewares as a request progresses through the\nmiddlewares in order. Allowing any middleware to undo this in a\nfooters callback breaks that predictable ordering.\n\nThe author is not aware of any middleware other than the encrypter\nthat does currently set an etag override footer (but has seen it\nproposed), so this fix is preventitive.\n\nChange-Id: I318669d37d8862d548590c74f36b945ad3cb4281\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/2c48a547f44a524870e56f4cd32b47926fcf9ad2"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/2c48a547f44a524870e56f4cd32b47926fcf9ad2"}]},"branch":"refs/heads/master"},"b6e8d2666a9f8d90016df1a1ed3c381d9d3183e1":{"kind":"REWORK","_number":4,"created":"2025-02-10 14:48:07.000000000","uploader":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"ref":"refs/changes/65/940165/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/65/940165/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/65/940165/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/65/940165/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/65/940165/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/65/940165/4"}}},"commit":{"parents":[{"commit":"ab120e8d8cbf8ca4affd3f79cd1c2684d3ba8ad2","subject":"Add etag override header helpers","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/ab120e8d8cbf8ca4affd3f79cd1c2684d3ba8ad2"}]}],"author":{"name":"Alistair Coles","email":"alistairncoles@gmail.com","date":"2025-01-23 15:03:09.000000000","tz":0},"committer":{"name":"Alistair Coles","email":"alistairncoles@gmail.com","date":"2025-02-10 14:47:33.000000000","tz":0},"subject":"Apply etag override header params to footer","message":"Apply etag override header params to footer\n\nMiddlewares can install a callback to update PUT request footers. If\nthey do so they may set an\nX-Object-Sysmeta-Container-Update-Override-Etag (a.k.a. \"etag\noverride\") *footer* which would replace any etag override *header* set\nby other middlewares. In doing so, params that middlewares have\nappended to the etag override header would be lost.\n\nFor example, middleware X could replace, by setting an etag override\nfooter, not only the etag override value set by another middleware Y,\nbut also any params that annotated Y\u0027s etag override value. This\nwould lead to etag override params that are significant to Y being\nlost. This could be avoided if every middleware\u0027s footers callback is\ncareful to transfer them from the header to the footer. In general\nthis is hard for middlewares to do correctly because they may not have\naccess to the final etag override header in the request environ that\nreaches the proxy app.\n\nThis patch therefore modifies the proxy obj controller to ensure that\netag override header params are always copied to an etag override\nfooter, if there is one. It is therefore not necessary for most other\nmiddlewares to do the same, because the proxy obj controller will\napply all etag override header params as the request is completing.\n\nHowever, the encrypter middleware does need some modification. The\nencrypter already needs to transfer etag override *header* params to\nthe encrypted etag override *footer* that it sets in its footers\ncallback, so that etag override header params are encrypted. The\nencrypter previously did this only if no other middleware had set an\netag override footer, but not if it found an existing etag override\nfooter set by another middleware.\n\nThis patch therefore also modifies the encrypter to similarly ensure\nthat etag override header params are always copied to an etag override\nfooter. The encrypter will create an etag override *footer* if none\nexists, otherwise it will update the existing footer. The encrypter\nnow also removes any etag override *header* to prevent the proxy obj\ncontroller copying the unencrypted value over the encrypted footer.\n\nPreviously, the encrypted etag was, in order of preference, an etag\noverride value previously set by another middleware in footers, or an\netag override value in the headers received by the encrypter, or the\nhexdigest of the md5 of the request body. This patch changes the order\nof preference for the override etag value: an etag override value in\nthe headers received by the encrypter is now preferred over an etag\noverride value previously set by another middleware in footers. In\ngeneral, middlewares that \u0027know better\u0027 replace etag override values\nset by previous middlewares as a request progresses through the\nmiddlewares in order. Allowing any middleware to undo this in a\nfooters callback breaks that predictable ordering.\n\nThe author is not aware of any middleware other than the encrypter\nthat does currently set an etag override footer (but has seen it\nproposed), so this fix is preventitive.\n\nChange-Id: I318669d37d8862d548590c74f36b945ad3cb4281\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/b6e8d2666a9f8d90016df1a1ed3c381d9d3183e1"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/b6e8d2666a9f8d90016df1a1ed3c381d9d3183e1"}]},"branch":"refs/heads/master"},"c63efec0375c13ec937b0e359c4ee69d134509c5":{"kind":"REWORK","_number":5,"created":"2025-02-11 10:28:20.000000000","uploader":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"ref":"refs/changes/65/940165/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/65/940165/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/65/940165/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/65/940165/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/65/940165/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/65/940165/5"}}},"commit":{"parents":[{"commit":"396d586af26ed768868ec587903e170e965c38c2","subject":"Add etag override header helpers","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/396d586af26ed768868ec587903e170e965c38c2"}]}],"author":{"name":"Alistair Coles","email":"alistairncoles@gmail.com","date":"2025-01-23 15:03:09.000000000","tz":0},"committer":{"name":"Alistair Coles","email":"alistairncoles@gmail.com","date":"2025-02-11 10:22:41.000000000","tz":0},"subject":"Apply etag override header params to footer","message":"Apply etag override header params to footer\n\nMiddlewares can install a callback to update PUT request footers. If\nthey do so they may set an\nX-Object-Sysmeta-Container-Update-Override-Etag (a.k.a. \"etag\noverride\") *footer* which would replace any etag override *header* set\nby other middlewares. In doing so, params that middlewares have\nappended to the etag override header would be lost.\n\nFor example, middleware X could replace, by setting an etag override\nfooter, not only the etag override value set by another middleware Y,\nbut also any params that annotated Y\u0027s etag override value. This\nwould lead to etag override params that are significant to Y being\nlost. This could be avoided if every middleware\u0027s footers callback is\ncareful to transfer them from the header to the footer. In general\nthis is hard for middlewares to do correctly because they may not have\naccess to the final etag override header in the request environ that\nreaches the proxy app.\n\nThis patch therefore modifies the proxy obj controller to ensure that\netag override header params are always copied to an etag override\nfooter, if there is one. It is therefore not necessary for most other\nmiddlewares to do the same, because the proxy obj controller will\napply all etag override header params as the request is completing.\n\nHowever, the encrypter middleware does need some modification. The\nencrypter already needs to transfer etag override *header* params to\nthe encrypted etag override *footer* that it sets in its footers\ncallback, so that etag override header params are encrypted. The\nencrypter previously did this only if no other middleware had set an\netag override footer, but not if it found an existing etag override\nfooter set by another middleware.\n\nThis patch therefore also modifies the encrypter to similarly ensure\nthat etag override header params are always copied to an etag override\nfooter. The encrypter will create an etag override *footer* if none\nexists, otherwise it will update the existing footer. The encrypter\nnow also removes any etag override *header* to prevent the proxy obj\ncontroller copying the unencrypted value over the encrypted footer.\n\nPreviously, the encrypted etag was, in order of preference, an etag\noverride value previously set by another middleware in footers, or an\netag override value in the headers received by the encrypter, or the\nhexdigest of the md5 of the request body. This patch changes the order\nof preference for the override etag value: an etag override value in\nthe headers received by the encrypter is now preferred over an etag\noverride value previously set by another middleware in footers. In\ngeneral, middlewares that \u0027know better\u0027 replace etag override values\nset by previous middlewares as a request progresses through the\nmiddlewares in order. Allowing any middleware to undo this in a\nfooters callback breaks that predictable ordering.\n\nThe author is not aware of any middleware other than the encrypter\nthat does currently set an etag override footer (but has seen it\nproposed), so this fix is preventitive.\n\nChange-Id: I318669d37d8862d548590c74f36b945ad3cb4281\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/c63efec0375c13ec937b0e359c4ee69d134509c5"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/c63efec0375c13ec937b0e359c4ee69d134509c5"}]},"branch":"refs/heads/master"},"01d114ff9d5933572ea2839a2a179580a2399c20":{"kind":"TRIVIAL_REBASE","_number":6,"created":"2025-02-11 10:36:10.000000000","uploader":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"ref":"refs/changes/65/940165/6","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/65/940165/6","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/65/940165/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/65/940165/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/65/940165/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/65/940165/6"}}},"commit":{"parents":[{"commit":"215e7e481ff771af96e8805041506b62f5bc2476","subject":"Add etag override header helpers","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/215e7e481ff771af96e8805041506b62f5bc2476"}]}],"author":{"name":"Alistair Coles","email":"alistairncoles@gmail.com","date":"2025-01-23 15:03:09.000000000","tz":0},"committer":{"name":"Alistair Coles","email":"alistairncoles@gmail.com","date":"2025-02-11 10:30:57.000000000","tz":0},"subject":"Apply etag override header params to footer","message":"Apply etag override header params to footer\n\nMiddlewares can install a callback to update PUT request footers. If\nthey do so they may set an\nX-Object-Sysmeta-Container-Update-Override-Etag (a.k.a. \"etag\noverride\") *footer* which would replace any etag override *header* set\nby other middlewares. In doing so, params that middlewares have\nappended to the etag override header would be lost.\n\nFor example, middleware X could replace, by setting an etag override\nfooter, not only the etag override value set by another middleware Y,\nbut also any params that annotated Y\u0027s etag override value. This\nwould lead to etag override params that are significant to Y being\nlost. This could be avoided if every middleware\u0027s footers callback is\ncareful to transfer them from the header to the footer. In general\nthis is hard for middlewares to do correctly because they may not have\naccess to the final etag override header in the request environ that\nreaches the proxy app.\n\nThis patch therefore modifies the proxy obj controller to ensure that\netag override header params are always copied to an etag override\nfooter, if there is one. It is therefore not necessary for most other\nmiddlewares to do the same, because the proxy obj controller will\napply all etag override header params as the request is completing.\n\nHowever, the encrypter middleware does need some modification. The\nencrypter already needs to transfer etag override *header* params to\nthe encrypted etag override *footer* that it sets in its footers\ncallback, so that etag override header params are encrypted. The\nencrypter previously did this only if no other middleware had set an\netag override footer, but not if it found an existing etag override\nfooter set by another middleware.\n\nThis patch therefore also modifies the encrypter to similarly ensure\nthat etag override header params are always copied to an etag override\nfooter. The encrypter will create an etag override *footer* if none\nexists, otherwise it will update the existing footer. The encrypter\nnow also removes any etag override *header* to prevent the proxy obj\ncontroller copying the unencrypted value over the encrypted footer.\n\nPreviously, the encrypted etag was, in order of preference, an etag\noverride value previously set by another middleware in footers, or an\netag override value in the headers received by the encrypter, or the\nhexdigest of the md5 of the request body. This patch changes the order\nof preference for the override etag value: an etag override value in\nthe headers received by the encrypter is now preferred over an etag\noverride value previously set by another middleware in footers. In\ngeneral, middlewares that \u0027know better\u0027 replace etag override values\nset by previous middlewares as a request progresses through the\nmiddlewares in order. Allowing any middleware to undo this in a\nfooters callback breaks that predictable ordering.\n\nThe author is not aware of any middleware other than the encrypter\nthat does currently set an etag override footer (but has seen it\nproposed), so this fix is preventitive.\n\nChange-Id: I318669d37d8862d548590c74f36b945ad3cb4281\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/01d114ff9d5933572ea2839a2a179580a2399c20"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/01d114ff9d5933572ea2839a2a179580a2399c20"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"OK","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY"},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"}}]}],"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":["label:Workflow\u003dMIN"],"failing_atoms":["label:Workflow\u003dMAX"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
