)]}'
{"id":"openstack%2Fswift~994977","triplet_id":"openstack%2Fswift~master~Ied8851c2a6586ca07897f0d4cd4926be7d9e4e1b","project":"openstack/swift","branch":"master","attention_set":{"1179":{"account":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"last_update":"2026-07-01 08:48:56.000000000","reason":"\u003cGERRIT_ACCOUNT_7847\u003e replied on the change","reason_account":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"}}},"removed_from_attention_set":{"7847":{"account":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"last_update":"2026-07-01 01:19:01.000000000","reason":"Change was submitted"},"39146":{"account":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"last_update":"2026-06-30 20:14:33.000000000","reason":"\u003cGERRIT_ACCOUNT_39146\u003e replied on the change","reason_account":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"}}},"hashtags":[],"change_id":"Ied8851c2a6586ca07897f0d4cd4926be7d9e4e1b","subject":"s3api: Fix restore on delete","status":"MERGED","created":"2026-06-25 20:54:59.000000000","updated":"2026-07-02 16:49:52.000000000","submitted":"2026-07-01 01:19:01.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":15,"unresolved_comment_count":7,"has_review_started":true,"submission_id":"994977","meta_rev_id":"dc7cccbfec53df167d164797e0685313e29aab23","_number":994977,"virtual_id_number":994977,"owner":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},{"value":0,"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2026-07-01 01:19:00.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":"","default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"recommended":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"all":[{"value":1,"date":"2026-06-30 20:14:33.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},{"value":2,"date":"2026-07-01 00:10:18.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},{"value":0,"_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":"","value":1,"default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"all":[{"value":0,"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},{"value":1,"date":"2026-07-01 00:10:18.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},{"value":0,"_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":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"}],"CC":[{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-06-25 21:11:31.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-06-30 15:52:14.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":"REVIEWER"},{"updated":"2026-07-01 08:48:56.000000000","updated_by":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"reviewer":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"state":"CC"},{"updated":"2026-07-01 22:26:30.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"}],"messages":[{"id":"cdf55035a4df1da4d4808be47c3e3afc5bd33f35","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"date":"2026-06-25 20:54:59.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"9fea07cb550043620a3a1464c910aa074fdefeea","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-25 21:11:31.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/43abd769c74a49a8aec2401cbf91666b\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/71b4a176b1b04cffa1d5841b2bea022e : SUCCESS in 10m 23s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/730b4e85bc744332b58c392e3c167175 : SUCCESS in 9m 28s\n- swift-build-image https://zuul.opendev.org/t/openstack/build/38f935c0593849628e931dafde277c15 : SUCCESS in 6m 01s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/514a77c42c2b430782f20ff69a226d01 : SUCCESS in 8m 51s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/38846c0501bf4dc7acc2834c038f8906 : SUCCESS in 4m 14s","accounts_in_message":[],"_revision_number":1},{"id":"f1761cf40016a842151b046860d47ad466aff049","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-25 22:10:08.000000000","message":"Patch Set 1:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/9c09dbdf213d4930b17261c21626a436\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/029a6211a50045a8b062ef904b5ca32b : SUCCESS in 1h 05m 18s","accounts_in_message":[],"_revision_number":1},{"id":"2dd204689610642a047249f16d30b1203b794d5e","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"date":"2026-06-29 19:42:28.000000000","message":"Uploaded patch set 2.\n\nOutdated Votes:\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":2},{"id":"ed86f54b688ad0ae902fbf77ac0c7aa90ed1b604","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-29 19:58:10.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/6f561aced51f4a639e14d03f88c18832\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/460bcf7ff27045179bfcd92eff5466e1 : SUCCESS in 8m 02s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/fc69d12c6e1a47d59fa59e8274007cc3 : SUCCESS in 6m 05s\n- swift-build-image https://zuul.opendev.org/t/openstack/build/65fca5c6691748fcae323097329b7b73 : SUCCESS in 6m 32s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/b5f0429fcc8e41769a60453cc2e8aad5 : SUCCESS in 7m 40s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/1bdfa63bbd214720934051a3d545d3fd : SUCCESS in 2m 45s\n\nWarning:\n  File .local/share/containers/cache/blob-info-cache-v1.sqlite found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .docker/config.json found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .local/share/containers/cache/blob-info-cache-v1.sqlite found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .docker/config.json found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .local/share/containers/cache/blob-info-cache-v1.sqlite found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .docker/config.json found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml.  Add to preserve-home-paths if safe, or otherwise remove.","accounts_in_message":[],"_revision_number":2},{"id":"be713f78529208d6e99aebe60f6ad3663eb41b0d","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-29 20:23:33.000000000","message":"Patch Set 2:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/54dd3b19d0c1473290c59881b4119380\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/5b512f8d39674ab9a1244f3a4ea0bba3 : SUCCESS in 39m 04s","accounts_in_message":[],"_revision_number":2},{"id":"df99ec402b2b3f44a7041429075a0e14801703b0","author":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"date":"2026-06-30 15:52:14.000000000","message":"Patch Set 2: Code-Review+1\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"0c1b3702ddb0063857a0daf8b67467f57f75ccfb","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2026-06-30 17:32:39.000000000","message":"Uploaded patch set 3.\n\nOutdated Votes:\n* Code-Review+1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":3},{"id":"113c153f3c8002b819974f347ffd33916638964d","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2026-06-30 17:38:15.000000000","message":"Uploaded patch set 4.","accounts_in_message":[],"_revision_number":4},{"id":"1a0a9ff6fbd1b617095c49713aa9b51d466a6564","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-30 18:10:32.000000000","message":"Patch Set 4:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/d636973afb0a43faa134f7b3cb75429a\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/04e95e40ac894fb1bdb78660c92304a9 : SUCCESS in 30m 37s","accounts_in_message":[],"_revision_number":4},{"id":"aeda344082602337acbd48e48f49bfad42677bd3","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-30 18:46:32.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/67af43568b024bf2ad826b324c7f5dd1\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/496af4fae3ef428f8b6205915a93bb14 : SUCCESS in 10m 43s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/f08a76dfe16d4ced8e12e4cbc141b715 : SUCCESS in 10m 29s\n- grenade https://zuul.opendev.org/t/openstack/build/06d693b85360430b97301283b41547ee : SUCCESS in 1h 07m 35s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/a76accf921b0411985bb6ec793bd5979 : SUCCESS in 1h 05m 21s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/6c91065c050d4c56a9e34c8931fa7d7d : SUCCESS in 56m 14s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/c58f99dd8fa14859b08175c42bfb401a : SUCCESS in 1h 05m 38s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/e66deb01314f469b849ba1f44b65b85e : SUCCESS in 15m 44s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/0068cd037caf4b279d48a67fcf8f01ce : SUCCESS in 20m 39s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/23cacc7f622d4955b2ffb4ab7ff1e185 : SUCCESS in 15m 58s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/4098eed6bf524f60ba044b78aabf8c52 : RETRY_LIMIT in 3m 16s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/bfc90f8e8994476e9aa8442884bbc8f6 : SUCCESS in 28m 03s\n- swift-tox-py310 https://zuul.opendev.org/t/openstack/build/887a1a5927b24771b6ba175f4125c568 : SUCCESS in 17m 22s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/0d8ee0d939164bfeb7ad01c7a69262fb : SUCCESS in 33m 42s\n- swift-tox-py314 https://zuul.opendev.org/t/openstack/build/67676d5e395649539b3c7096a2ada3b0 : SUCCESS in 19m 04s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/7efcc0bed00f416083e1a0f30450b24d : SUCCESS in 14m 49s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/0c6603d990a2449e9297013d3eb7c85a : SUCCESS in 14m 22s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/2159a123db094cba89706dfcfd4353c0 : SUCCESS in 16m 24s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/dfe880e0363d42b2b7ed798b7a7275e9 : SUCCESS in 6m 14s\n- swift-tox-func-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/05e7a83864974f559fd995b63f597d8e : SUCCESS in 18m 35s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/fe48474bc1d7418d97cbf4c7ad1480a6 : SUCCESS in 8m 29s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/8a160dc34f09498aa020d6146fe9adad : SUCCESS in 1h 01m 51s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/af0d53ed02154b7cabc98d63326cfd8c : SUCCESS in 53m 54s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/b1ee389eeed14634904dbed132febbe3 : SUCCESS in 54m 18s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/21206cbcab594d579d376fbdcbcaba39 : SUCCESS in 33m 15s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/8a4f2e9ab8c84c62a84c45dfbece8642 : SUCCESS in 6m 05s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/3f91e19f3a3748f79aacf3cbcba2f95d : SUCCESS in 10m 08s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/237e0aa66f7f423bbf0f5bbde2c2dbd9 : SUCCESS in 48m 55s\n\nWarning:\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/zuul/zuul-jobs/playbooks/unittests/post.yaml.  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.  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.  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.  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.  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.  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.  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.  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.  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.  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.  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.  Add to preserve-home-paths if safe, or otherwise remove.","accounts_in_message":[],"_revision_number":4},{"id":"339351b4efa4858f272fa150dba0e5533fc04038","author":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"date":"2026-06-30 20:14:33.000000000","message":"Patch Set 4: Code-Review+1\n\n(1 comment)","accounts_in_message":[],"_revision_number":4},{"id":"e694e1c24c8dd08dc7ed0462bb035bd7a565bc44","author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"date":"2026-07-01 00:10:18.000000000","message":"Patch Set 4: Code-Review+2 Workflow+1\n\n(6 comments)","accounts_in_message":[],"_revision_number":4},{"id":"699fee1d5d09584a0a45ebab745d6ba7fda80298","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-01 00:10:46.000000000","message":"Patch Set 4: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":4},{"id":"ec6faa7065d110ee3e2e00d2c5baa9868369fac0","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-01 01:19:00.000000000","message":"Patch Set 4: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/7bab087c44464df5a7c506346e6dfc3f\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/1a22f5a00b4241fa976d3b09fa45d16d : SUCCESS in 10m 03s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/bddec7809df241d9ba36f38b42b72ec2 : SUCCESS in 7m 20s\n- grenade https://zuul.opendev.org/t/openstack/build/3e61cb3d25e7415da3251a2872f611e6 : SUCCESS in 1h 03m 47s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/945b0bd5afac46e09ea1ad7a3fe9db73 : SUCCESS in 30m 47s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/d739873c61724861880b33c2b3a444dd : SUCCESS in 56m 51s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/b01c1f84dc7c43fd9bd5618aecf2b1da : SUCCESS in 1h 03m 33s\n- swift-upload-image https://zuul.opendev.org/t/openstack/build/9b91f75823114bd4b9cf97d947101356 : SUCCESS in 6m 16s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/2b27e432b29849b6a7bbf4167c397d17 : SUCCESS in 22m 53s\n- swift-tox-py310 https://zuul.opendev.org/t/openstack/build/a7c49d575fc442c38f3bdadab37e1992 : SUCCESS in 22m 07s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/9820e9dda40c4dd594435324af524575 : SUCCESS in 22m 45s\n- swift-tox-py314 https://zuul.opendev.org/t/openstack/build/39ce2865d3e74ff485ff5070d39b3c23 : SUCCESS in 9m 13s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/0a207adf92b14dc798a63baf7b893afd : SUCCESS in 12m 53s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/cff3ebbd239643d491d828c080f6e3a4 : SUCCESS in 13m 02s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/fec5e032c134466cba4379e8428de725 : SUCCESS in 9m 08s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/f8e1018d5cab41bb8763bc8175e8e58c : SUCCESS in 5m 14s\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/8d551b76ba6b4fbe96e3f577d101bbf2 : SUCCESS in 5m 03s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/9e380caa48b44ce9b2a332936ebbe88c : SUCCESS in 37m 03s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/087a2e4de83345f39cb37888d3f15315 : SUCCESS in 56m 33s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/eb6d63b729e3468d86913d78f9f26142 : SUCCESS in 25m 05s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/a5d66ec92ccc4057a5ea27039c3bd761 : SUCCESS in 27m 38s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/a25532791d77412d819f4b5fb39ace07 : SUCCESS in 3m 58s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/d9c6d5607a834e09be85fb2d5de114e5 : SUCCESS in 18m 52s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/cc42c030ca754f22abda152b0e78be0b : SUCCESS in 53m 48s\n\nWarning:\n  File .docker/config.json found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .docker/config.json found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .docker/config.json found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml.  Add to preserve-home-paths if safe, or otherwise remove.","accounts_in_message":[],"_revision_number":4},{"id":"1e1b6910797201dd2ddba7fcea83aab8ca7ce711","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-01 01:19:01.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":4},{"id":"4188c8ce1514b6f4213aa8f755b3aa5d12ae3f40","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-01 01:20:04.000000000","message":"Patch Set 4:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/efd68ae55f054b5dbcee9daa71a372ec\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/bb7a6fa8fcf44106ad59508dd95f5f76 : SUCCESS in 51s\n- swift-promote-image https://zuul.opendev.org/t/openstack/build/04df354602c04a338afd405f9d142296 : SUCCESS in 45s (non-voting)","accounts_in_message":[],"_revision_number":4},{"id":"35bda92ebcb188c1e4ab956c17fde2fd67ebc4e5","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2026-07-01 08:48:56.000000000","message":"Patch Set 4:\n\n(1 comment)","accounts_in_message":[],"_revision_number":4},{"id":"a167e4b58d1b8417c28684fb9f0c65699af220e3","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2026-07-01 22:26:30.000000000","message":"Patch Set 4:\n\n(2 comments)","accounts_in_message":[],"_revision_number":4},{"id":"152f29c7a423d8e47273153b24b8349173e2e7e2","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2026-07-01 22:42:35.000000000","message":"Patch Set 4:\n\n(1 comment)","accounts_in_message":[],"_revision_number":4},{"id":"78fb76bd310eb73d72973ae58822f7bcf02f1b8d","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2026-07-02 09:23:44.000000000","message":"Patch Set 4:\n\n(2 comments)","accounts_in_message":[],"_revision_number":4},{"id":"dc7cccbfec53df167d164797e0685313e29aab23","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2026-07-02 16:49:52.000000000","message":"Patch Set 4:\n\n(1 comment)","accounts_in_message":[],"_revision_number":4}],"current_revision_number":4,"current_revision":"40fa5395feda255d1474d22267efefa66f986156","revisions":{"e1914c349550b8338735da00d8a7658cc4c8d372":{"kind":"REWORK","_number":1,"created":"2026-06-25 20:54:59.000000000","uploader":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"ref":"refs/changes/77/994977/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/77/994977/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/77/994977/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/77/994977/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/77/994977/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/77/994977/1"}}},"commit":{"parents":[{"commit":"6b9904c9080fd0dc19c0aab236bc85852809d833","subject":"Merge \"add tests for dispersion reports\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/6b9904c9080fd0dc19c0aab236bc85852809d833"}]}],"author":{"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","date":"2026-06-25 20:30:26.000000000","tz":-300},"committer":{"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","date":"2026-06-25 20:54:05.000000000","tz":-300},"subject":"s3api: Test deleting hidden versioned MPUs","message":"s3api: Test deleting hidden versioned MPUs\n\nAdd cross-compat coverage for a versioning-enabled bucket where a\nmultipart object is overwritten, versioning is suspended, and an\nunversioned delete hides the old versions.\n\nThe test verifies that the hidden MPU versions remain available by\nversion id, that a newly-written null-version MPU is the only visible\nobject, and that deleting each hidden version by version id succeeds.\n\nChange-Id: Ied8851c2a6586ca07897f0d4cd4926be7d9e4e1b\nSigned-off-by: Clay Gerrard \u003cclay.gerrard@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/e1914c349550b8338735da00d8a7658cc4c8d372"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/e1914c349550b8338735da00d8a7658cc4c8d372"}]},"branch":"refs/heads/master"},"2457f1911665cee519a037ff678543d0dd916bbe":{"kind":"REWORK","_number":2,"created":"2026-06-29 19:42:28.000000000","uploader":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"ref":"refs/changes/77/994977/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/77/994977/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/77/994977/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/77/994977/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/77/994977/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/77/994977/2"}}},"commit":{"parents":[{"commit":"6b9904c9080fd0dc19c0aab236bc85852809d833","subject":"Merge \"add tests for dispersion reports\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/6b9904c9080fd0dc19c0aab236bc85852809d833"}]}],"author":{"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","date":"2026-06-25 20:30:26.000000000","tz":-300},"committer":{"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","date":"2026-06-29 18:43:46.000000000","tz":-300},"subject":"s3api: Document delete marker prefix sibling behavior","message":"s3api: Document delete marker prefix sibling behavior\n\nAdd coverage for a versioning-enabled bucket with an object and an\nadjacent key that shares the same prefix. The test creates a delete\nmarker, removes the older object version, then deletes the marker by\nversion id.\n\nSwift currently returns NoSuchBucket for the marker delete even\nthough the marker is removed. The test documents this as unexpected\nbehavior while continuing to verify the final version listing.\n\nChange-Id: Ied8851c2a6586ca07897f0d4cd4926be7d9e4e1b\nSigned-off-by: Clay Gerrard \u003cclay.gerrard@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/2457f1911665cee519a037ff678543d0dd916bbe"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/2457f1911665cee519a037ff678543d0dd916bbe"}]},"branch":"refs/heads/master"},"42d9a14a28aa127045251501dc5606208f493a53":{"kind":"REWORK","_number":3,"created":"2026-06-30 17:32:39.000000000","uploader":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"ref":"refs/changes/77/994977/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/77/994977/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/77/994977/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/77/994977/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/77/994977/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/77/994977/3"}}},"commit":{"parents":[{"commit":"6b9904c9080fd0dc19c0aab236bc85852809d833","subject":"Merge \"add tests for dispersion reports\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/6b9904c9080fd0dc19c0aab236bc85852809d833"}]}],"author":{"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","date":"2026-06-25 20:30:26.000000000","tz":-300},"committer":{"name":"Alistair Coles","email":"alistairncoles@gmail.com","date":"2026-06-30 17:32:14.000000000","tz":60},"subject":"s3api: Fix restore on delete","message":"s3api: Fix restore on delete\n\nWhen the current version of an object \"foo\" in a versioned bucket is\nsuccessfully deleted, the s3api will attempt to restore the previous\nversion. The previous version-id is found by listing the bucket using\nthe object\u0027s name \"foo\" as a prefix. This prefixed listing may include\nother objects whose names start with the deleted object name\ne.g. \"foo-bar\". Previously, if the deleted object \"foo\" has no\nprevious version, and another object \"foo-bar\" appeared first in the\nprefixed listing, s3api would erroneously take the version-id of\n\"foo-bar\" and consider that to be the previous version of the\n*deleted* object \"foo\". This would result in a 404 from\nobject_versioning middleware when it does a HEAD to verify the\nexistence of the restored version. The client would receive a 404\nresponse when in fact the requested object version has been\nsuccessfully deleted.\n\nThis patch fixes the s3api restore-on-delete logic to ignore other\nobjects that might be included in the prefixed listing when searching\nfor previous versions of the deleted object. Now, if the deleted\nobject has no previous version, the client will always receive a 204\nresponse.\n\nThe patch adds s3api compatibility test coverage for a\nversioning-enabled bucket with an object and an adjacent key that\nshares the same prefix. The test creates a delete marker, removes the\nolder object version, then deletes the marker by version id.\n\nCloses-Bug: #2158794\nChange-Id: Ied8851c2a6586ca07897f0d4cd4926be7d9e4e1b\nSigned-off-by: Clay Gerrard \u003cclay.gerrard@gmail.com\u003e\nSigned-off-by: Alistair Coles \u003calistairncoles@gmail.com\u003e\nCo-Authored-By: Alistair Coles \u003calistairncoles@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/42d9a14a28aa127045251501dc5606208f493a53"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/42d9a14a28aa127045251501dc5606208f493a53"}]},"branch":"refs/heads/master"},"40fa5395feda255d1474d22267efefa66f986156":{"kind":"REWORK","_number":4,"created":"2026-06-30 17:38:15.000000000","uploader":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"ref":"refs/changes/77/994977/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/77/994977/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/77/994977/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/77/994977/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/77/994977/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/77/994977/4"}}},"commit":{"parents":[{"commit":"6b9904c9080fd0dc19c0aab236bc85852809d833","subject":"Merge \"add tests for dispersion reports\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/6b9904c9080fd0dc19c0aab236bc85852809d833"}]}],"author":{"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","date":"2026-06-25 20:30:26.000000000","tz":-300},"committer":{"name":"Alistair Coles","email":"alistairncoles@gmail.com","date":"2026-06-30 17:37:54.000000000","tz":60},"subject":"s3api: Fix restore on delete","message":"s3api: Fix restore on delete\n\nWhen the current version of an object \"foo\" in a versioned bucket is\nsuccessfully deleted, the s3api will attempt to restore the previous\nversion. The previous version-id is found by listing the bucket using\nthe object\u0027s name \"foo\" as a prefix. This prefixed listing may include\nother objects whose names start with the deleted object name\ne.g. \"foo-bar\". Previously, if the deleted object \"foo\" has no\nprevious version, and another object \"foo-bar\" appeared first in the\nprefixed listing, s3api would erroneously take the version-id of\n\"foo-bar\" and consider that to be the previous version of the\n*deleted* object \"foo\". This would result in a 404 from\nobject_versioning middleware when it does a HEAD to verify the\nexistence of the restored version. The client would receive a 404\nresponse when in fact the requested object version has been\nsuccessfully deleted.\n\nThis patch fixes the s3api restore-on-delete logic to ignore other\nobjects that might be included in the prefixed listing when searching\nfor previous versions of the deleted object. Now, if the deleted\nobject has no previous version, the client will always receive a 204\nresponse.\n\nThe patch adds s3api compatibility test coverage for a\nversioning-enabled bucket with an object and an adjacent key that\nshares the same prefix. The test creates a delete marker, removes the\nolder object version, then deletes the marker by version id.\n\nCloses-Bug: #2158794\nChange-Id: Ied8851c2a6586ca07897f0d4cd4926be7d9e4e1b\nSigned-off-by: Clay Gerrard \u003cclay.gerrard@gmail.com\u003e\nSigned-off-by: Alistair Coles \u003calistairncoles@gmail.com\u003e\nCo-Authored-By: Alistair Coles \u003calistairncoles@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/40fa5395feda255d1474d22267efefa66f986156"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/40fa5395feda255d1474d22267efefa66f986156"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"CLOSED","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY","applied_by":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"}},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"}}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dMAX"],"failing_atoms":["label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dMAX"],"failing_atoms":["label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Workflow\u003dMAX"],"failing_atoms":["label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
