)]}'
{"id":"openstack%2Fswift~916861","triplet_id":"openstack%2Fswift~master~Ic731f0d93b3054149db16ffd080683100ad377fd","project":"openstack/swift","branch":"master","topic":"fix-rebase","attention_set":{"7233":{"account":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"last_update":"2024-10-30 09:38:36.000000000","reason":"A robot voted negatively on a label"},"597":{"account":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"last_update":"2024-07-22 16:40:50.000000000","reason":"Vote got outdated and was removed: Code-Review-1"},"1179":{"account":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"last_update":"2026-07-23 01:28:05.000000000","reason":"A robot voted negatively on a label"},"15343":{"account":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"last_update":"2024-04-30 00:18:02.000000000","reason":"\u003cGERRIT_ACCOUNT_7233\u003e replied on the change","reason_account":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"}}},"removed_from_attention_set":{"7847":{"account":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"last_update":"2026-07-23 15:24:23.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":"Ic731f0d93b3054149db16ffd080683100ad377fd","subject":"db_auditor: add vacuum support","status":"NEW","created":"2024-04-24 05:33:11.000000000","updated":"2026-07-23 15:24:23.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":false,"submittable":false,"total_comment_count":44,"unresolved_comment_count":8,"has_review_started":true,"meta_rev_id":"a32014ac4ee32f249dc6d38f20ccb34f21f92fee","_number":916861,"virtual_id_number":916861,"owner":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"actions":{},"labels":{"Verified":{"recommended":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},{"tag":"autogenerated:zuul:check","value":1,"date":"2026-07-23 11:47:27.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}],"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":{"disliked":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"all":[{"value":-1,"date":"2026-07-23 15:03:23.000000000","permitted_voting_range":{"min":-1,"max":1},"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},{"value":-1,"date":"2026-07-23 13:42:10.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"permitted_voting_range":{"min":-2,"max":2},"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}],"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":{"all":[{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"CC":[{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"}],"REVIEWER":[{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2024-04-24 06:33:08.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":"CC"},{"updated":"2024-04-24 06:48:03.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":"2024-04-30 00:10:22.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":"REVIEWER"},{"updated":"2024-05-15 16:21:38.000000000","updated_by":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"reviewer":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"state":"CC"},{"updated":"2024-05-28 19:43:49.000000000","updated_by":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"reviewer":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"state":"REVIEWER"},{"updated":"2025-04-08 19:48:45.000000000","updated_by":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"reviewer":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"state":"CC"},{"updated":"2026-07-23 13:42:10.000000000","updated_by":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"reviewer":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"state":"REVIEWER"},{"updated":"2026-07-23 15:03:23.000000000","updated_by":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"reviewer":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"state":"REVIEWER"},{"updated":"2026-07-23 15:24:23.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"}],"messages":[{"id":"d7efa884ab20dc85ec0a9b060df3e27d2d56bbb7","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2024-04-24 05:33:11.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"18901f11e3865c268d633ce1ca1ab125d5c205fb","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-04-24 06:33:08.000000000","message":"Patch Set 1:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/246c4aca4df14d2ebe5ec8b9450c184c\n\n- swift-tox-py38-arm64 https://zuul.opendev.org/t/openstack/build/61fa1fe1fff44406a4d9fe8d46a6b5e3 : SUCCESS in 14m 00s\n- swift-tox-py39-arm64 https://zuul.opendev.org/t/openstack/build/e9f81d5ac2474ed6bd4e83b9e4add2a1 : SUCCESS in 36m 14s\n- swift-tox-func-encryption-py38-arm64 https://zuul.opendev.org/t/openstack/build/2822879a1de047ea9baacc081b85c2a5 : SUCCESS in 24m 34s\n- swift-tox-func-py38-arm64 https://zuul.opendev.org/t/openstack/build/f33f9e20460a4e048351aa76c442a07f : SUCCESS in 58m 04s","accounts_in_message":[],"_revision_number":1},{"id":"57bb0f843d630925fc59ba67bc87657d81156a18","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-04-24 06:48:03.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/bfe9b3de610240d08849f7137e2556e2\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/b9c928e849534697a1d951cab8e9eaf7 : FAILURE in 5m 25s\n- grenade https://zuul.opendev.org/t/openstack/build/561b87ba28d64e8c8b3aaad270060cce : SUCCESS in 59m 33s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/c600946828eb48f3a16ff9d534958103 : SUCCESS in 35m 49s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/5c736fac13d748499087f0d5afb3e6a6 : SUCCESS in 1h 01m 42s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/6ad0d625a0094c168dfe3f7848eabbfd : SUCCESS in 18m 43s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/fd002ff0cf9748758cba5b09c5f6f448 : SUCCESS in 19m 28s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/ef12bd3a100f42afb096dfb45ca53b6a : SUCCESS in 19m 17s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/6706836ee29e4d07b0eea45f8f12853b : SUCCESS in 11m 05s (non-voting)\n- swift-build-image-py3 https://zuul.opendev.org/t/openstack/build/0d8e424b911b4cc399c3420c2921e3ea : SUCCESS in 4m 56s (non-voting)\n- swift-tox-py27 https://zuul.opendev.org/t/openstack/build/42c2990e62d2423eacd25ca035852b8a : SUCCESS in 19m 24s\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/46d5399fc4d84c06bd1626a6851270e0 : SUCCESS in 13m 21s\n- swift-tox-py38 https://zuul.opendev.org/t/openstack/build/a05d34f3939e4c83a409cdaaebd850b3 : SUCCESS in 17m 05s\n- swift-tox-py311 https://zuul.opendev.org/t/openstack/build/bff8e810df8d494b86b6594632addaa2 : SUCCESS in 17m 28s\n- swift-tox-func-py27 https://zuul.opendev.org/t/openstack/build/ebbdf06c520a41609274bc5bd4a29fdc : SUCCESS in 18m 10s\n- swift-tox-func-encryption-py27 https://zuul.opendev.org/t/openstack/build/7246a75f4dd345fd93bb21eb09c50cf1 : SUCCESS in 18m 32s\n- swift-tox-func-ec-py27 https://zuul.opendev.org/t/openstack/build/518148d119c345a08ca55736b8ba0eff : SUCCESS in 18m 26s\n- swift-tox-func-py38 https://zuul.opendev.org/t/openstack/build/435c91a5b59b4f4b9555284c08252e7b : SUCCESS in 15m 32s\n- swift-tox-func-encryption-py38 https://zuul.opendev.org/t/openstack/build/15f721507b24467ea9d948c18aec54b9 : SUCCESS in 14m 59s\n- swift-tox-func-ec-py38 https://zuul.opendev.org/t/openstack/build/9680bf876a9b4c80883c8ff6a5d02534 : SUCCESS in 16m 17s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/3943a51de24f48dfa2d6666237043978 : SUCCESS in 5m 40s\n- swift-tox-func-s3api-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/21767ef6c6284f819bedc9932999e12f : SUCCESS in 17m 10s (non-voting)\n- swift-tox-func-s3api-tests-tempauth https://zuul.opendev.org/t/openstack/build/ed87c2e4104c4b2487a2c4ced7a56458 : SUCCESS in 7m 24s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/76ae178ab4e043beaff0e0bcb916e288 : SUCCESS in 1h 09m 25s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/266cd1e0e9754f0382eba86ae63ff8dd : SUCCESS in 56m 30s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/a7357277411948368efacc4c6e2545a7 : SUCCESS in 53m 24s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/a0bc88edb83143fc92019b1709c08de8 : SUCCESS in 20m 33s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/445172b09d1e48caae9395d379370746 : SUCCESS in 3m 41s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/aafb9f37b3d7476d8aceb6b6bab9f595 : SUCCESS in 19m 00s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/3f382d8a27c44befb16cc39b07d1ff56 : SUCCESS in 37m 58s","accounts_in_message":[],"_revision_number":1},{"id":"f9212292368da601965f79d4e26b00a941ddd233","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2024-04-26 06:52:36.000000000","message":"Uploaded patch set 2.\n\nOutdated Votes:\n* Verified-1\n","accounts_in_message":[],"_revision_number":2},{"id":"fba87d5a75c9e663282e8d9535082c1af2299408","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-04-26 07:30:18.000000000","message":"Patch Set 2:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/85c203b39fed47ffb1c811568bf2a314\n\n- swift-tox-py38-arm64 https://zuul.opendev.org/t/openstack/build/8fe43b29707c4b2287ca98bc1a3e49e6 : SUCCESS in 17m 30s\n- swift-tox-py39-arm64 https://zuul.opendev.org/t/openstack/build/ca88f44dc13a45aba7bf399774229fdc : SUCCESS in 17m 39s\n- swift-tox-func-encryption-py38-arm64 https://zuul.opendev.org/t/openstack/build/6b30d05396d3418086784f3053394e73 : SUCCESS in 36m 10s\n- swift-tox-func-py38-arm64 https://zuul.opendev.org/t/openstack/build/1a35de2575be45c9af0c809cdb82ec6c : SUCCESS in 26m 39s","accounts_in_message":[],"_revision_number":2},{"id":"d1aa8595debb7fe0c4ac1a2f75ccd57b2d0fd3c6","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-04-26 08:05:39.000000000","message":"Patch Set 2: 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/6098e2968e7243a58c30e7ae0daa6899\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/5e0ce48567bd44d9bfc705ce15c186ba : SUCCESS in 8m 18s\n- grenade https://zuul.opendev.org/t/openstack/build/55698ab14e8b4572a23c69ee8ffc1cf9 : SUCCESS in 1h 05m 59s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/c490055845cd40afa77fe8f5a8abad3e : SUCCESS in 51m 12s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/dd403a50dd3e4d52829bafb413c0c6c4 : SUCCESS in 59m 58s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/77381d6dc3974872ba9d701ef0b51e8c : SUCCESS in 17m 41s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/689135cd86a74cb787ba76b96c9c332d : SUCCESS in 19m 12s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/452f5c7a904f40c08fa1ab12d11e9692 : SUCCESS in 18m 26s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/2189d4fdfcba4447987b6e5f2c22c0dc : SUCCESS in 10m 42s (non-voting)\n- swift-build-image-py3 https://zuul.opendev.org/t/openstack/build/6097614613c24e78b116e21bfffabe2f : SUCCESS in 5m 55s (non-voting)\n- swift-tox-py27 https://zuul.opendev.org/t/openstack/build/4a7a1bf1305644038fc72ca3f3656710 : SUCCESS in 16m 30s\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/9d160f43ad0c4626bb124363084ab682 : SUCCESS in 16m 43s\n- swift-tox-py38 https://zuul.opendev.org/t/openstack/build/8a1b727d14654b88afbbf7c8f8ea030b : SUCCESS in 17m 32s\n- swift-tox-py311 https://zuul.opendev.org/t/openstack/build/63f2a49322ad4100acb7b1f0f7107e77 : SUCCESS in 23m 05s\n- swift-tox-func-py27 https://zuul.opendev.org/t/openstack/build/ead4b4f8eb4c4fb5b35666d024ba1a58 : SUCCESS in 20m 44s\n- swift-tox-func-encryption-py27 https://zuul.opendev.org/t/openstack/build/a91a24307bf148b999ebe7d9f9dd72c7 : SUCCESS in 19m 02s\n- swift-tox-func-ec-py27 https://zuul.opendev.org/t/openstack/build/db3b98fcb43c41b38cbf836f2c81a04b : SUCCESS in 22m 02s\n- swift-tox-func-py38 https://zuul.opendev.org/t/openstack/build/981261bb009845178259fa86988e456f : SUCCESS in 14m 45s\n- swift-tox-func-encryption-py38 https://zuul.opendev.org/t/openstack/build/643569c6180b44b6bfda6f5fb147487e : SUCCESS in 19m 30s\n- swift-tox-func-ec-py38 https://zuul.opendev.org/t/openstack/build/35ce6180fb3e458c95676a2fd2c4de59 : SUCCESS in 17m 30s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/1f56f30e0a9f475a9a9fa383679cc53f : SUCCESS in 5m 22s\n- swift-tox-func-s3api-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/3e0f4e1d016d4a21beef316b95de0e75 : SUCCESS in 15m 03s (non-voting)\n- swift-tox-func-s3api-tests-tempauth https://zuul.opendev.org/t/openstack/build/56677a29d6d0463f9f6fb1e4b7e45786 : SUCCESS in 7m 10s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/594209f8aa1442bfad26e11a30a12cdb : FAILURE in 56m 38s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/2832fb2a2e844bd6b3b629d0d265f669 : SUCCESS in 54m 13s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/738bb22a6bd1424b91742a06dabbdfa4 : SUCCESS in 51m 04s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/d804e21df2084a95b01f5dff3541abc3 : SUCCESS in 18m 49s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/af581fe600e140269fa036851e055e45 : SUCCESS in 4m 35s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/73f01a770bce45c2863246c2b333a665 : SUCCESS in 20m 07s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/1217c6fe198d45d894c00c932bd38d02 : SUCCESS in 1h 03m 40s","accounts_in_message":[],"_revision_number":2},{"id":"40e5b0d355dba5b0015d8a074790dcd98800b1e4","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2024-04-29 07:16:33.000000000","message":"Uploaded patch set 3.\n\nOutdated Votes:\n* Verified-1\n","accounts_in_message":[],"_revision_number":3},{"id":"ab1b341a60fb138925ba9329e4d9e572a36670a9","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-04-29 08:24:07.000000000","message":"Patch Set 3:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/b4a710fcd8134cf58cc5c3c51178d28f\n\n- swift-tox-py38-arm64 https://zuul.opendev.org/t/openstack/build/e0ba1cd8bd314ff5802bd28bd789d69e : SUCCESS in 16m 53s\n- swift-tox-py39-arm64 https://zuul.opendev.org/t/openstack/build/bd1a6bdaa7314dcbb32a28f293dce041 : SUCCESS in 15m 17s\n- swift-tox-func-encryption-py38-arm64 https://zuul.opendev.org/t/openstack/build/516dbd11bde94a2ba8cbf6cbe4b617f1 : SUCCESS in 1h 06m 06s\n- swift-tox-func-py38-arm64 https://zuul.opendev.org/t/openstack/build/4639838ec9a84cc9aaba76d01f678833 : SUCCESS in 21m 27s","accounts_in_message":[],"_revision_number":3},{"id":"7338a4c2058737fa1d3750ff6171c4c40a118406","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-04-29 09:07:13.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/9cacb309ee7844d4a013a6d8365c1cc6\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/d90847332fbc4bd5bbda3dbb568dd8a7 : SUCCESS in 8m 29s\n- grenade https://zuul.opendev.org/t/openstack/build/201a9ae9b7bc4504a152ec0cca51183a : SUCCESS in 1h 00m 14s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/782d3abf38e941219fe11d86552f78a5 : SUCCESS in 54m 13s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/739e42c87d194cceb3d4f6714a9c9c1c : SUCCESS in 1h 13m 07s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/104cceded21b4a2981d0b9f7d47af9b9 : SUCCESS in 18m 51s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/b5f9cae3e9c34c52920604ebcab96aff : SUCCESS in 19m 14s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/fc35b8c20c8c46348b357c8ba58304be : SUCCESS in 20m 39s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/213d63c917084632879ba8ff32a765e6 : SUCCESS in 8m 57s (non-voting)\n- swift-build-image-py3 https://zuul.opendev.org/t/openstack/build/ab7934e4b9544387b67c84be22f5e07e : SUCCESS in 6m 34s (non-voting)\n- swift-tox-py27 https://zuul.opendev.org/t/openstack/build/ab998c4707674647814529ff564dbd59 : SUCCESS in 20m 39s\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/895b5a99998048dc922c88979267e6e8 : SUCCESS in 17m 36s\n- swift-tox-py38 https://zuul.opendev.org/t/openstack/build/cb7a26a758af4545ac3aae513c370582 : SUCCESS in 17m 01s\n- swift-tox-py311 https://zuul.opendev.org/t/openstack/build/a9a56e07c2c64f89b94946bb0c5900e1 : SUCCESS in 17m 05s\n- swift-tox-func-py27 https://zuul.opendev.org/t/openstack/build/e0fcc654509947edb7b644f61ac94b40 : SUCCESS in 17m 59s\n- swift-tox-func-encryption-py27 https://zuul.opendev.org/t/openstack/build/fe59dc3cffbb440da4223f22637f5438 : SUCCESS in 20m 35s\n- swift-tox-func-ec-py27 https://zuul.opendev.org/t/openstack/build/29bee0e6de544e7a8a6df30e049472ee : SUCCESS in 21m 11s\n- swift-tox-func-py38 https://zuul.opendev.org/t/openstack/build/acc4a7b834f04c4ca41d350305208892 : SUCCESS in 18m 42s\n- swift-tox-func-encryption-py38 https://zuul.opendev.org/t/openstack/build/f88fc957046148ca8998617e10b7f8fc : SUCCESS in 15m 39s\n- swift-tox-func-ec-py38 https://zuul.opendev.org/t/openstack/build/73e6d593de1e408b9e070e3597ae1e97 : SUCCESS in 17m 32s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/20637c87d8e34c5680eeb6877701f4d7 : SUCCESS in 5m 50s\n- swift-tox-func-s3api-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/933caeb14eef43b5b7e1920378a6b930 : SUCCESS in 18m 37s (non-voting)\n- swift-tox-func-s3api-tests-tempauth https://zuul.opendev.org/t/openstack/build/b49db4e8d0a34276a06053e38a7813df : SUCCESS in 9m 25s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/0401a18aadee44cca5d16e283f08522f : SUCCESS in 59m 54s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/3854cc84808e4e8b82676f71235e948c : SUCCESS in 45m 05s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/abefa79450b94314baea629131bf8444 : FAILURE in 1h 10m 18s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/4c17d83cbebf408294f4ed93d50b579c : SUCCESS in 25m 44s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/02af4aaefe804251be585b9eed38b2b5 : SUCCESS in 4m 22s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/e2cb3915c5984581bb460be5b8c29eeb : SUCCESS in 18m 53s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/1d7d63a247e24d8388d219d6504269c5 : SUCCESS in 59m 04s","accounts_in_message":[],"_revision_number":3},{"id":"77a413891726cd00ed8457ce977569b623401543","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2024-04-30 00:10:22.000000000","message":"Patch Set 3: Code-Review+1\n\n(5 comments)","accounts_in_message":[],"_revision_number":3},{"id":"369c2303d4f3c99b0ead356f5a645d18924ed7c4","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2024-04-30 00:18:02.000000000","message":"Patch Set 3:\n\n(5 comments)","accounts_in_message":[],"_revision_number":3},{"id":"dce60dcb1cda82439ea1fb799b05c379b13d0e6f","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2024-04-30 07:12:46.000000000","message":"Uploaded patch set 4.\n\nOutdated Votes:\n* Code-Review+1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified-1\n","accounts_in_message":[],"_revision_number":4},{"id":"93c9fe0371a39120c9d021c4e9126e7277f15a5d","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2024-04-30 07:13:08.000000000","message":"Patch Set 3:\n\n(4 comments)","accounts_in_message":[],"_revision_number":3},{"id":"d4cc6b137205892cdc1e9ddfc50af6b41bde4654","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-04-30 07:34:37.000000000","message":"Patch Set 4:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/8aefc24dcd614eae979c119b8ce72811\n\n- swift-tox-py38-arm64 https://zuul.opendev.org/t/openstack/build/63e49b5444e549ebbd0ebf60a85f0222 : SUCCESS in 17m 33s\n- swift-tox-py39-arm64 https://zuul.opendev.org/t/openstack/build/2caa249df0124e4d8ac76eceefb16421 : SUCCESS in 16m 45s\n- swift-tox-func-encryption-py38-arm64 https://zuul.opendev.org/t/openstack/build/a52ddec21b434a3c9db34dc10afed5b8 : SUCCESS in 20m 49s\n- swift-tox-func-py38-arm64 https://zuul.opendev.org/t/openstack/build/cc0afcf089994bb99bcabb0a3d96789d : SUCCESS in 20m 11s","accounts_in_message":[],"_revision_number":4},{"id":"7a7464e67bc37cf3ac48dd5538ee27e6ebb26060","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-04-30 08:26:00.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/5651b6349dee487291def6f29fd98fdf\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/4fbeae0ee8ff4ae1a979acffac55784a : SUCCESS in 7m 08s\n- grenade https://zuul.opendev.org/t/openstack/build/846dfadd8cfa433bbfbe61ce64de5e16 : SUCCESS in 43m 16s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/3d34651c39124ff49cb0a7543bd23a38 : SUCCESS in 36m 50s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/56a8ebf70464447da9ae91c14601cf6a : SUCCESS in 1h 04m 37s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/7faebb59b0e94c3586fd77708eaf115e : SUCCESS in 19m 29s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/ccd76d41488c43509666f18deb4c4581 : SUCCESS in 19m 24s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/91416664b902456aa1b2366b5b0604c3 : SUCCESS in 19m 43s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/c8a8509962124cd189ebe5c531f336c1 : SUCCESS in 10m 37s (non-voting)\n- swift-build-image-py3 https://zuul.opendev.org/t/openstack/build/0915310ff6cf43d3bc6665fa7a8e6bfb : SUCCESS in 5m 41s (non-voting)\n- swift-tox-py27 https://zuul.opendev.org/t/openstack/build/c59365f58fd94b018f0377eb474e0bb5 : SUCCESS in 20m 01s\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/291fafc383bf4c4da7d437d0378103d7 : SUCCESS in 21m 02s\n- swift-tox-py38 https://zuul.opendev.org/t/openstack/build/f1dca76fca394fef9fec841de6456abd : SUCCESS in 20m 10s\n- swift-tox-py311 https://zuul.opendev.org/t/openstack/build/e5cadc32528640b689e23d86f8e4facf : SUCCESS in 17m 19s\n- swift-tox-func-py27 https://zuul.opendev.org/t/openstack/build/5aedd05ab0094e788ec8b1328a8fb13b : SUCCESS in 18m 13s\n- swift-tox-func-encryption-py27 https://zuul.opendev.org/t/openstack/build/ad2bcd5d13184d5295814fa053c5e98e : SUCCESS in 18m 10s\n- swift-tox-func-ec-py27 https://zuul.opendev.org/t/openstack/build/a437d863b1a04abba4388c1a9478a4b2 : SUCCESS in 21m 54s\n- swift-tox-func-py38 https://zuul.opendev.org/t/openstack/build/c7d2ff8e0d6a408bb81d842007c7980c : SUCCESS in 16m 15s\n- swift-tox-func-encryption-py38 https://zuul.opendev.org/t/openstack/build/5aa0a97d3dc04c758402adf4c1d492e4 : SUCCESS in 14m 34s\n- swift-tox-func-ec-py38 https://zuul.opendev.org/t/openstack/build/4521b91fc5044bf1b7b7ffcf2f5ffe1d : SUCCESS in 16m 09s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/0947271e0d004aa8a4b6af508b688cf4 : SUCCESS in 5m 35s\n- swift-tox-func-s3api-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/ef4db5fd6dc04107b4cc8a64f601f787 : SUCCESS in 15m 29s (non-voting)\n- swift-tox-func-s3api-tests-tempauth https://zuul.opendev.org/t/openstack/build/51f753409dbd43778a8f8db201f379dc : SUCCESS in 7m 32s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/b39cd6a7dcd1472680f6410086257036 : SUCCESS in 1h 01m 56s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/33a56d66d691464a960f1662264b5771 : SUCCESS in 52m 15s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/713fed546a674999a6bdb81d872c9a82 : SUCCESS in 49m 52s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/154b47912e8f4baa8520959bec2ee595 : SUCCESS in 18m 41s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/ea78bf4ea6b142b597a9a5a0adb483f4 : SUCCESS in 4m 22s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/2fc9bd2d136e488dbc18e74174acfe09 : SUCCESS in 19m 20s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/9e413ff433a24fcfa630b59f4161fa97 : SUCCESS in 1h 05m 56s","accounts_in_message":[],"_revision_number":4},{"id":"2aba8f63e25dd35fd891a1cad547ce84483948dc","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2024-05-02 06:07:36.000000000","message":"Uploaded patch set 5.\n\nOutdated Votes:\n* Verified+1\n","accounts_in_message":[],"_revision_number":5},{"id":"9634002942762bb85223266b1a852c638e197c24","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-05-02 06:47:29.000000000","message":"Patch Set 5:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/405b9dbec2b24ef0a3f94c1b823af5d2\n\n- swift-tox-py38-arm64 https://zuul.opendev.org/t/openstack/build/a8e5b3e5f5654e0c8e2cb3bd01cf7eed : SUCCESS in 13m 46s\n- swift-tox-py39-arm64 https://zuul.opendev.org/t/openstack/build/c15be810f3014185b7f517d976385910 : SUCCESS in 37m 54s\n- swift-tox-func-encryption-py38-arm64 https://zuul.opendev.org/t/openstack/build/6b8287e448f84f21bc9e35727f768f01 : SUCCESS in 20m 26s\n- swift-tox-func-py38-arm64 https://zuul.opendev.org/t/openstack/build/1fa1d2c5a79e4c98bc10ff8593dc5846 : SUCCESS in 33m 43s","accounts_in_message":[],"_revision_number":5},{"id":"1cb68b1c1611f95e5568c25cc15f097951933fc8","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-05-02 07:20:54.000000000","message":"Patch Set 5: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/99cf31a659c74ed69b271114282c5d79\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/ef077db2ff1f4f6eab02f1cee77899aa : SUCCESS in 9m 33s\n- grenade https://zuul.opendev.org/t/openstack/build/ad8050adb2394a0c9678a2cfa29188e5 : SUCCESS in 40m 03s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/c8e47fafb18a4744b71119a27a0acd1c : SUCCESS in 34m 52s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/8d9f5a3a738c4d7193b47b5eccbdbf41 : SUCCESS in 1h 07m 31s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/fd34c1309553411e87dbdeaa098b4d46 : SUCCESS in 19m 42s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/36981eb27f1940ceaba1b9a4e6fa2c9c : SUCCESS in 18m 58s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/ce6ce2a5d24b45bba47d24aeccd022a6 : SUCCESS in 20m 32s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/500e949478664ddc87513cf002d7fef0 : SUCCESS in 8m 44s (non-voting)\n- swift-build-image-py3 https://zuul.opendev.org/t/openstack/build/b5aeecab5ae04b54b9c246529249ff4e : SUCCESS in 4m 41s (non-voting)\n- swift-tox-py27 https://zuul.opendev.org/t/openstack/build/fdfe982a225d426b813099a59c68a9de : SUCCESS in 17m 46s\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/a559dd460fd64350a046b2335ec82a94 : SUCCESS in 13m 06s\n- swift-tox-py38 https://zuul.opendev.org/t/openstack/build/827ca7519dbb457f9d1940b9bbbb9cc7 : SUCCESS in 18m 58s\n- swift-tox-py311 https://zuul.opendev.org/t/openstack/build/fa2d41840b094fceb080d0ea091bfdf9 : SUCCESS in 16m 18s\n- swift-tox-func-py27 https://zuul.opendev.org/t/openstack/build/53bacd8d4f104bfba26a60a3325313af : SUCCESS in 17m 12s\n- swift-tox-func-encryption-py27 https://zuul.opendev.org/t/openstack/build/6c194f9afcbb42c582ea15fcd425be33 : SUCCESS in 18m 38s\n- swift-tox-func-ec-py27 https://zuul.opendev.org/t/openstack/build/3a96b8466c744bb6969f40e0528fbbbc : SUCCESS in 19m 02s\n- swift-tox-func-py38 https://zuul.opendev.org/t/openstack/build/4409a7ca4f854afaa1e14c8ba20c5e0d : SUCCESS in 16m 06s\n- swift-tox-func-encryption-py38 https://zuul.opendev.org/t/openstack/build/e81059e664c94c9d868dd0fb849cd9c0 : SUCCESS in 15m 36s\n- swift-tox-func-ec-py38 https://zuul.opendev.org/t/openstack/build/805f47bcad324872bee6aa9927e83af8 : SUCCESS in 16m 14s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/ed4b52e67ac849deba0b652e71e46777 : SUCCESS in 6m 15s\n- swift-tox-func-s3api-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/d443a834e01f4e82895015df2cd15a36 : SUCCESS in 15m 28s (non-voting)\n- swift-tox-func-s3api-tests-tempauth https://zuul.opendev.org/t/openstack/build/171663ff07dc4b3ca32d2d280d35b0ce : SUCCESS in 8m 46s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/0cd7e4ac10a44399b29eb34cbfecfc93 : SUCCESS in 55m 22s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/bdf9001393d9466fb56b0cca10e7927f : SUCCESS in 47m 03s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/6da13afc71fc45f8845e15841d375444 : SUCCESS in 54m 27s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/aa138246ba1c45799e239234addbdaa7 : SUCCESS in 17m 56s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/3d7e01cb81d94202932fa92c8bbe3a5d : SUCCESS in 5m 31s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/edfd8b0a517b4189a9d3c2d03c8365a2 : SUCCESS in 22m 56s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/d05bd4703b574e41a457cbcc371c85fa : SUCCESS in 47m 48s","accounts_in_message":[],"_revision_number":5},{"id":"500888c14eece963f36e6625befb79c15cc519a3","author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"date":"2024-05-15 16:21:38.000000000","message":"Patch Set 5:\n\n(1 comment)","accounts_in_message":[],"_revision_number":5},{"id":"79b0a35ab5e5d73e480165a13671ede1367c9cd7","author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"date":"2024-05-28 19:43:49.000000000","message":"Patch Set 5: Code-Review-1\n\n(6 comments)","accounts_in_message":[],"_revision_number":5},{"id":"a9f5ea62ecb4b4154ff89c4e0951d4b3430aaeaa","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2024-06-04 03:47:48.000000000","message":"Uploaded patch set 6.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1\n","accounts_in_message":[],"_revision_number":6},{"id":"c756c0cbd9224c3d1bf8286fbcc631a33c1f21b9","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-06-04 04:40:40.000000000","message":"Patch Set 6:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/6ef3a9a1efcd40c989dda27efeeb57b2\n\n- swift-tox-py38-arm64 https://zuul.opendev.org/t/openstack/build/d347f18bd7834681835e172448918b13 : SUCCESS in 16m 19s\n- swift-tox-py39-arm64 https://zuul.opendev.org/t/openstack/build/530592a0906b428a92d50921bd32dd2c : SUCCESS in 51m 04s\n- swift-tox-func-encryption-py38-arm64 https://zuul.opendev.org/t/openstack/build/ffa6d15c79c746aba7d26b2b3f9aad6f : SUCCESS in 26m 05s\n- swift-tox-func-py38-arm64 https://zuul.opendev.org/t/openstack/build/ecfc0bd5b3ea408d909534f38594d4f1 : SUCCESS in 17m 35s","accounts_in_message":[],"_revision_number":6},{"id":"92e76007384bd3a73e97646fcea7062b6a1d3a68","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2024-06-04 04:45:12.000000000","message":"Patch Set 6:\n\n(6 comments)","accounts_in_message":[],"_revision_number":6},{"id":"aabe4550e2c7e80ff0406ce422deab0ccadf5602","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-06-04 04:57:29.000000000","message":"Patch Set 6: 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/b2a75e285f6b47c4a754b5f931044492\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/e899602e074f462789cc0871f3ba7685 : SUCCESS in 6m 46s\n- grenade https://zuul.opendev.org/t/openstack/build/36b2946b97494419bae1d05a09e00280 : SUCCESS in 48m 25s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/0cd2c9c852d641768d008408279cbebf : SUCCESS in 39m 00s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/1c86250369ca4e2fa0eb2b32891652dd : SUCCESS in 50m 45s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/7a7162d66af740e1a9c2a6d131585be7 : SUCCESS in 17m 35s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/6c6565b5c4c24ccf8736e2b23a3a3a63 : SUCCESS in 21m 09s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/71a7946c35a14c4bae4d885128f126d7 : SUCCESS in 18m 47s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/abb13249ab0e4f0584a1498dc2438989 : SUCCESS in 8m 32s (non-voting)\n- swift-build-image-py3 https://zuul.opendev.org/t/openstack/build/f16fcd4deace469ebd3aa497fc1fd685 : SUCCESS in 5m 18s (non-voting)\n- swift-tox-py27 https://zuul.opendev.org/t/openstack/build/ed103414a6184f0aac0b3f599f0686cb : SUCCESS in 18m 27s\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/669974055a084cbfbffa163fccfcdb2f : SUCCESS in 17m 26s\n- swift-tox-py38 https://zuul.opendev.org/t/openstack/build/9a2f8ef00ebf4352a31b304563886dca : SUCCESS in 15m 52s\n- swift-tox-py311 https://zuul.opendev.org/t/openstack/build/9fda32a10f3842fe90f4d1e3a537969b : SUCCESS in 17m 24s\n- swift-tox-py312 https://zuul.opendev.org/t/openstack/build/e9d840fcda9d4644b9ba1284b581499e : SUCCESS in 23m 00s\n- swift-tox-func-py27 https://zuul.opendev.org/t/openstack/build/19197d1843324ab5af382fcfd887344b : SUCCESS in 18m 25s\n- swift-tox-func-encryption-py27 https://zuul.opendev.org/t/openstack/build/9d8f088a95f849fb90c807e16f153769 : SUCCESS in 20m 08s\n- swift-tox-func-ec-py27 https://zuul.opendev.org/t/openstack/build/23d57ef629204b44b61eb2e0b8d25560 : SUCCESS in 17m 57s\n- swift-tox-func-py38 https://zuul.opendev.org/t/openstack/build/bafd9b8620ec41e7905ea7770c08135b : SUCCESS in 15m 54s\n- swift-tox-func-encryption-py38 https://zuul.opendev.org/t/openstack/build/7e56920ca1fa4ba899c3d25a28ef6b6c : SUCCESS in 15m 16s\n- swift-tox-func-ec-py38 https://zuul.opendev.org/t/openstack/build/4a3a72cf288a4afebb7d4a324ee1d4d8 : SUCCESS in 17m 23s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/898ac05b23ef4dedac68720a8b568fe3 : SUCCESS in 6m 04s\n- swift-tox-func-s3api-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/1878e97387fe4e2fa87a07387e198a1a : RETRY_LIMIT in 1m 45s (non-voting)\n- swift-tox-func-s3api-tests-tempauth https://zuul.opendev.org/t/openstack/build/74da251fa072481cbb35d08e58ceb582 : RETRY_LIMIT in 1m 40s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/99345e811afc48d385b4adce9cc832ed : SUCCESS in 56m 46s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/280ef460686540e1b3c5a01859d15d94 : SUCCESS in 53m 25s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/a8cd2ad4540846c1945b7308d74d300b : SUCCESS in 37m 00s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/c12abf6ab8494afab29eea3b827b70f7 : SUCCESS in 16m 36s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/30bca8d8cf56481ebc5b1c20ad7702d2 : SUCCESS in 4m 05s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/1a41e7de1df246b9a4be786ab1d7fd2e : RETRY_LIMIT in 1m 54s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/2fba784ab74c4cd6be9386a62689c96f : SUCCESS in 41m 39s","accounts_in_message":[],"_revision_number":6},{"id":"138b021e2d8d3f020437c35b9ad6c2a78b55c004","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2024-06-04 06:09:53.000000000","message":"Patch Set 6:\n\n(1 comment)","accounts_in_message":[],"_revision_number":6},{"id":"e1f2d4739027bb1fbd0b00eacac998f702afd1db","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-06-04 06:32:54.000000000","message":"Patch Set 6:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/be1b6e4747794cdba154ed27fdb2ada9\n\n- swift-tox-py38-arm64 https://zuul.opendev.org/t/openstack/build/e349df2fc4da458fa5abd9a334b53e10 : SUCCESS in 17m 09s\n- swift-tox-py39-arm64 https://zuul.opendev.org/t/openstack/build/99a16c9a63eb46d6b6f314e79a9e4c88 : SUCCESS in 16m 22s\n- swift-tox-func-encryption-py38-arm64 https://zuul.opendev.org/t/openstack/build/a7ee7fb7350844308a267e1793513dab : SUCCESS in 20m 22s\n- swift-tox-func-py38-arm64 https://zuul.opendev.org/t/openstack/build/a12e5928b3e84b1298c3ed4cedd6603c : SUCCESS in 21m 55s","accounts_in_message":[],"_revision_number":6},{"id":"34a09f7eb419b21ecd3a6af16862ce4201a5b939","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2024-06-04 06:51:25.000000000","message":"Uploaded patch set 7.\n\nOutdated Votes:\n* Verified-1\n","accounts_in_message":[],"_revision_number":7},{"id":"76cf5b24dd3beb4bd882494cd8a829d92f18439a","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-06-04 07:13:06.000000000","message":"Patch Set 7:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/23aeb5bd29af4e39b21990f4ec7b40fb\n\n- swift-tox-py38-arm64 https://zuul.opendev.org/t/openstack/build/d1afd70fb8d34233a8a69d034a504010 : SUCCESS in 16m 36s\n- swift-tox-py39-arm64 https://zuul.opendev.org/t/openstack/build/67f5d0b1ba15432cb315cdf7f60c575a : SUCCESS in 15m 48s\n- swift-tox-func-encryption-py38-arm64 https://zuul.opendev.org/t/openstack/build/4e57d9c76156475181dc06daa0edc52a : SUCCESS in 18m 45s\n- swift-tox-func-py38-arm64 https://zuul.opendev.org/t/openstack/build/a917cbf4c33d4622bef07c0b4f87f008 : SUCCESS in 20m 32s","accounts_in_message":[],"_revision_number":7},{"id":"31b6b6a404839869f381282b983b2cb4dc343403","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-06-04 08:15:41.000000000","message":"Patch Set 7: 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/000a0ae907324bfc9cd06cad8dfa0f9b\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/79b41ab67e99434184330de37949d5a1 : SUCCESS in 7m 09s\n- grenade https://zuul.opendev.org/t/openstack/build/054888ef6e36428b89d064425ffe9ef1 : SUCCESS in 1h 13m 30s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/1a6145d4990b46a88a5b558c24e9b789 : SUCCESS in 53m 29s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/f65ad7e920db4e89a17ca12890f65f20 : SUCCESS in 1h 02m 10s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/65bf41b7eb3a4fec8f1bbc444b681aab : SUCCESS in 18m 16s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/8746af74482b47bb8f4f068cd783a5dc : SUCCESS in 20m 03s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/fd02b916d03a4bc7bb2c1b0dfe61c390 : SUCCESS in 20m 10s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/4d13a194e51644e2b7aba526e346688c : SUCCESS in 11m 04s (non-voting)\n- swift-build-image-py3 https://zuul.opendev.org/t/openstack/build/1bf4a12254504509abd375a12f0f0666 : SUCCESS in 5m 50s (non-voting)\n- swift-tox-py27 https://zuul.opendev.org/t/openstack/build/f254ec3cf3264f3d88de9726e1559109 : SUCCESS in 18m 13s\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/0299449991974e30b5207c2a8c93ac46 : SUCCESS in 19m 24s\n- swift-tox-py38 https://zuul.opendev.org/t/openstack/build/6ad62a525d324703890ebc18e3e8558b : SUCCESS in 17m 39s\n- swift-tox-py311 https://zuul.opendev.org/t/openstack/build/8fa11824c57042618c969acbe4e9147f : SUCCESS in 18m 50s\n- swift-tox-py312 https://zuul.opendev.org/t/openstack/build/62a80a20c6564217ad3cc9265fde91e9 : SUCCESS in 16m 29s\n- swift-tox-func-py27 https://zuul.opendev.org/t/openstack/build/34b3232de90c4888906d272466f2bc95 : SUCCESS in 18m 14s\n- swift-tox-func-encryption-py27 https://zuul.opendev.org/t/openstack/build/2d2f301139e54380acd0e9c36f5297ad : SUCCESS in 18m 14s\n- swift-tox-func-ec-py27 https://zuul.opendev.org/t/openstack/build/93542774485346bc81f5403ded0fc44f : SUCCESS in 18m 13s\n- swift-tox-func-py38 https://zuul.opendev.org/t/openstack/build/f7136ca3bcf848c39fcf229b7ecc0e76 : SUCCESS in 16m 21s\n- swift-tox-func-encryption-py38 https://zuul.opendev.org/t/openstack/build/e0e1608574f14ca5a778b5000c52887a : SUCCESS in 17m 35s\n- swift-tox-func-ec-py38 https://zuul.opendev.org/t/openstack/build/c762dd5f332d4b9ab24d8d289c5a41ca : SUCCESS in 17m 14s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/d4c22b7e10eb44aa9a12f3e3013f47a7 : SUCCESS in 5m 07s\n- swift-tox-func-s3api-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/d47286af79f94a2e8b7fd20aae773d3b : RETRY_LIMIT in 2m 47s (non-voting)\n- swift-tox-func-s3api-tests-tempauth https://zuul.opendev.org/t/openstack/build/13962ae85c2c4055b68df91e00ab0e65 : RETRY_LIMIT in 1m 46s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/330cc126207a4e489045031c5e015f45 : SUCCESS in 49m 51s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/4f28299ec03341d387763d37bbf6204f : SUCCESS in 58m 09s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/5e2d535085ab4511864dd90cf4df6326 : SUCCESS in 37m 44s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/164f779ad942462ba3b24330a93b7708 : SUCCESS in 16m 37s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/86c4426164514ce9865c19a6b2de2ed5 : SUCCESS in 4m 01s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/74553dfd1050418ca4f9549d448ac893 : RETRY_LIMIT in 2m 04s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/7f1bbdf99ccf4447bc42aaf0cba9aae1 : SUCCESS in 41m 29s","accounts_in_message":[],"_revision_number":7},{"id":"cbd7bde3836f8b4bea82a4ef2c19dff1abaf49c4","author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"date":"2024-06-05 03:00:29.000000000","message":"Patch Set 7: Code-Review-1\n\n(3 comments)","accounts_in_message":[],"_revision_number":7},{"id":"a1b88dcd23dc46f16df5a1193020ee5bce09d806","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"date":"2024-07-22 16:40:50.000000000","message":"Uploaded patch set 8.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified-1\n","accounts_in_message":[],"_revision_number":8},{"id":"ede1b6c8f1d79aec02c684f7804e53d7f8fc25f3","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-07-22 17:05:05.000000000","message":"Patch Set 8:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/6c039ca23b314b79a813bf599f50fd2c\n\n- swift-tox-py38-arm64 https://zuul.opendev.org/t/openstack/build/6088a620de93458a965cb82842d52eac : SUCCESS in 17m 27s\n- swift-tox-py39-arm64 https://zuul.opendev.org/t/openstack/build/0793d521758f49eba322043a29733321 : SUCCESS in 18m 49s\n- swift-tox-func-encryption-py38-arm64 https://zuul.opendev.org/t/openstack/build/749e60b0c7864e65a9394735f024219a : SUCCESS in 20m 02s\n- swift-tox-func-py38-arm64 https://zuul.opendev.org/t/openstack/build/6c488ab1662a4d0b9ef80673766df070 : SUCCESS in 23m 11s","accounts_in_message":[],"_revision_number":8},{"id":"37f7ad995c869ddba53aaaac7ff99883dd27f082","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-07-22 17:46:36.000000000","message":"Patch Set 8: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/5705757dc5f8435495c4c9db9819fb92\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/c95b60d4587b4a0da6b79bebbee63112 : SUCCESS in 8m 33s\n- grenade https://zuul.opendev.org/t/openstack/build/62313d534c42473f8a3caafcb6b5359d : SUCCESS in 48m 35s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/300878bcb57c403a9d4fe58b87322ba0 : SUCCESS in 59m 48s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/13061a7fbe404c9d9a2af1299dc40ab1 : SUCCESS in 48m 09s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/9ea6a584b67b48948d7287da1a1a8ba7 : SUCCESS in 20m 20s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/e957c57635894471879d661057ba386b : SUCCESS in 17m 43s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/e349e2aca15b41ad9ca74b5126fe0eee : SUCCESS in 23m 31s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/6753ae2a70c94b56a3510cca50352aa2 : SUCCESS in 6m 26s (non-voting)\n- swift-tox-py27 https://zuul.opendev.org/t/openstack/build/bbce23a6d3074a0690cdf4d36856b36d : SUCCESS in 15m 51s\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/8a4d3d2dc0964749ad51d2df8adc0d84 : SUCCESS in 18m 46s\n- swift-tox-py38 https://zuul.opendev.org/t/openstack/build/2919f3eb8a19422993e1e87d04268373 : SUCCESS in 18m 39s\n- swift-tox-py311 https://zuul.opendev.org/t/openstack/build/9163c0ac627340da9a2008ae4e8e0212 : SUCCESS in 21m 52s\n- swift-tox-py312 https://zuul.opendev.org/t/openstack/build/21f7e7d277a143e98aa5e95686cfbccf : SUCCESS in 23m 51s\n- swift-tox-func-py27 https://zuul.opendev.org/t/openstack/build/d2b747ebf3a34abba849252edd7e8bf3 : SUCCESS in 22m 09s\n- swift-tox-func-encryption-py27 https://zuul.opendev.org/t/openstack/build/3a60e7d0f8594828b7b7773217f1a230 : SUCCESS in 21m 41s\n- swift-tox-func-ec-py27 https://zuul.opendev.org/t/openstack/build/945e61fce81f44b0968a7b3a647e0567 : SUCCESS in 19m 41s\n- swift-tox-func-py38 https://zuul.opendev.org/t/openstack/build/a8a107ac5221426f8562bdf6f985d8d2 : SUCCESS in 21m 41s\n- swift-tox-func-encryption-py38 https://zuul.opendev.org/t/openstack/build/07ed3bc9d6314c8da07a04f917e6d7d7 : SUCCESS in 15m 53s\n- swift-tox-func-ec-py38 https://zuul.opendev.org/t/openstack/build/1db67c9a3b604c248fa5262e77c5dfab : SUCCESS in 23m 17s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/378bd80b30a74d2989c9f58eda2c84ff : SUCCESS in 5m 44s\n- swift-tox-func-s3api-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/a41d505059e441438e189c44b4f23aff : SUCCESS in 19m 09s (non-voting)\n- swift-tox-func-s3api-tests-tempauth https://zuul.opendev.org/t/openstack/build/79e83a5cd97f45c9a504c164dded6b86 : SUCCESS in 6m 44s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/bcae5ff8f34949dca8558adc18a39291 : SUCCESS in 1h 01m 53s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/3e7cafd14e354b58ae51714214bb5e48 : SUCCESS in 57m 22s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/1bf4cc7babda41a5878da2967bc828a8 : SUCCESS in 47m 29s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/c0d53478bb75446db0c5f4acf0d74aed : SUCCESS in 20m 34s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/67a03be7e36f409a9afcbdc4339b94ff : SUCCESS in 4m 07s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/eb0463c2c4644fce9f5dcbaa47b397eb : SUCCESS in 18m 09s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/bd24943b0e4b4508a07fc9c7dbb9d51e : SUCCESS in 59m 48s","accounts_in_message":[],"_revision_number":8},{"id":"cfe98ef2a365db7ecaed93034af12378a7a07b1a","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2024-08-02 07:49:31.000000000","message":"Uploaded patch set 9.\n\nOutdated Votes:\n* Verified+1\n","accounts_in_message":[],"_revision_number":9},{"id":"e8affa917d751384d5066d2c6ea5d7c0e1d570e2","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-08-02 08:52:59.000000000","message":"Patch Set 9: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/3bf59cd564ae464894ad9fb9e7642bff\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/5d17488b80924b9fae7272776c9ff7ad : SUCCESS in 9m 13s\n- grenade https://zuul.opendev.org/t/openstack/build/a168adf23442470c9dc3ff4318ac945f : SUCCESS in 55m 31s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/ea0c8ea6bd8e440ba825ebc939f2668c : SUCCESS in 48m 07s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/68b1bbf5f4024257a671b6cff251951d : SUCCESS in 58m 48s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/8b5e5eab712c41a09af152eb6bd74772 : SUCCESS in 18m 38s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/7608de1004484cba8988664cc4cce4f0 : SUCCESS in 20m 50s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/a2d36b7c5ca644f3828431dd7bcee706 : SUCCESS in 26m 04s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/1961b3d9672042d9a36cbc39aaa53cc2 : SUCCESS in 5m 20s (non-voting)\n- swift-tox-py27 https://zuul.opendev.org/t/openstack/build/e611e2a07d794cbfb7e1084f24764838 : SUCCESS in 19m 53s\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/aff5781c3c61418580290c1170ae575c : SUCCESS in 18m 08s\n- swift-tox-py38 https://zuul.opendev.org/t/openstack/build/67b67f5a1b7e4e038b9109a43557761d : SUCCESS in 20m 45s\n- swift-tox-py311 https://zuul.opendev.org/t/openstack/build/8808c2439e554b2c91c7529ea8e43441 : SUCCESS in 21m 30s\n- swift-tox-py312 https://zuul.opendev.org/t/openstack/build/98cad817c0d14764a50f82c81f19c08e : SUCCESS in 19m 56s\n- swift-tox-func-py27 https://zuul.opendev.org/t/openstack/build/db1f1cb5dcfe447781b5315eefae1824 : SUCCESS in 17m 52s\n- swift-tox-func-encryption-py27 https://zuul.opendev.org/t/openstack/build/3bf95e76b5ee4a678bce5be80f0b4710 : SUCCESS in 18m 21s\n- swift-tox-func-ec-py27 https://zuul.opendev.org/t/openstack/build/53e61df03e304225a573176bf488f2f7 : SUCCESS in 17m 04s\n- swift-tox-func-py38 https://zuul.opendev.org/t/openstack/build/3f00aabc4f9d46a4bf962d543efafb04 : SUCCESS in 17m 14s\n- swift-tox-func-encryption-py38 https://zuul.opendev.org/t/openstack/build/d69d1e97e71046b084800372e2fd134a : SUCCESS in 19m 05s\n- swift-tox-func-ec-py38 https://zuul.opendev.org/t/openstack/build/d67636edb5a24c618420b9e9fc49819d : SUCCESS in 15m 47s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/799447b47271479084f4e8546077758e : SUCCESS in 5m 59s\n- swift-tox-func-s3api-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/a27604fa8b0f4bfdb3030f47815cbcf8 : SUCCESS in 15m 20s (non-voting)\n- swift-tox-func-s3api-tests-tempauth https://zuul.opendev.org/t/openstack/build/8813e062c64e40b2bef9527b981bb16a : SUCCESS in 7m 21s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/2e691c5f79e84276b49753f26743ce76 : SUCCESS in 49m 44s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/9786100d6aad49f691b72c49d74db76d : SUCCESS in 51m 13s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/44f833e8267f4907aa4c7529c4a62962 : SUCCESS in 50m 23s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/75a0c348f1c64112aa78e6179b22fd51 : SUCCESS in 19m 47s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/a7ca40f48c0e426a8f38015087c28471 : SUCCESS in 5m 00s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/6dc79e6564754fcea0ca1c81da0f7771 : SUCCESS in 22m 22s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/528964316bcb4a4b868fc21d83219b95 : SUCCESS in 56m 52s","accounts_in_message":[],"_revision_number":9},{"id":"03611b0738cb71f8cc89df13b8cc5de8538c1e0b","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-08-02 09:22:19.000000000","message":"Patch Set 9:\n\nBuild failed (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/7afb61f5784f42459b206f1ebcdb1e8b\n\n- swift-tox-py38-arm64 https://zuul.opendev.org/t/openstack/build/4aa6f9dd3049454e96591bdeadbc3fc9 : SUCCESS in 58m 18s\n- swift-tox-py39-arm64 https://zuul.opendev.org/t/openstack/build/8845d3804df046b3b91cfea1dbd9bd3f : TIMED_OUT in 1h 30m 58s\n- swift-tox-func-encryption-py38-arm64 https://zuul.opendev.org/t/openstack/build/2c577248b448419fba6030eb501de975 : SUCCESS in 1h 23m 27s\n- swift-tox-func-py38-arm64 https://zuul.opendev.org/t/openstack/build/fc562e1e8e0a4dfaa1c6795182929343 : TIMED_OUT in 1h 30m 58s","accounts_in_message":[],"_revision_number":9},{"id":"9c578713372b926ffedde9aecae839ed2f92bc5a","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2024-08-04 23:10:14.000000000","message":"Patch Set 9:\n\n(1 comment)","accounts_in_message":[],"_revision_number":9},{"id":"82bba00310015cd962b826b974a93a7ea69bc0ff","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2024-08-05 05:05:06.000000000","message":"Uploaded patch set 10.\n\nOutdated Votes:\n* Verified+1\n","accounts_in_message":[],"_revision_number":10},{"id":"2d431e2f5beb3e9bd3cd932af4b82ce5bf495278","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-08-05 06:16:10.000000000","message":"Patch Set 10: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/18ad0d58a74d4a87beda1d47d565ce83\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/8425625d04cf4870a977de37e5063344 : SUCCESS in 9m 31s\n- grenade https://zuul.opendev.org/t/openstack/build/1b748588f50f4996a4880bc2b1fd7139 : SUCCESS in 53m 06s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/e45f5a3258c84a2daee2d035425d9c85 : SUCCESS in 42m 11s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/cdb1b1eba0b544dfbf0805b6b1a6953a : SUCCESS in 54m 53s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/95cd61c6006240f9b149a52673557ace : SUCCESS in 18m 45s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/c74cdd5af8a14be5b8daf13277dd4a2c : SUCCESS in 19m 04s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/daffd04b115e40179d22fe44aba0f12a : SUCCESS in 19m 06s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/354b5a7b721747d0935df19d4f19a24a : SUCCESS in 5m 11s (non-voting)\n- swift-tox-py27 https://zuul.opendev.org/t/openstack/build/e64ac615a22c4933aadad5ef2d5727d9 : SUCCESS in 19m 54s\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/bf9ab8bf85dc4413a0e47327f799f8d8 : SUCCESS in 16m 57s\n- swift-tox-py38 https://zuul.opendev.org/t/openstack/build/48b83e5da56c42bda870dcb0c5ae555c : SUCCESS in 18m 25s\n- swift-tox-py311 https://zuul.opendev.org/t/openstack/build/6b8b291d26d14da0a561c381ffa3b5d6 : SUCCESS in 20m 32s\n- swift-tox-py312 https://zuul.opendev.org/t/openstack/build/7c25a203499341c486bddec0af725ebc : SUCCESS in 26m 57s\n- swift-tox-func-py27 https://zuul.opendev.org/t/openstack/build/777eeb5f5bc04a8fb496a48ae3b83702 : SUCCESS in 18m 22s\n- swift-tox-func-encryption-py27 https://zuul.opendev.org/t/openstack/build/1a0c6a8949f3479e98c5f323c665e575 : SUCCESS in 14m 09s\n- swift-tox-func-ec-py27 https://zuul.opendev.org/t/openstack/build/643244133bbc4f2bb2c66d7f3b80d6a3 : SUCCESS in 18m 18s\n- swift-tox-func-py38 https://zuul.opendev.org/t/openstack/build/b4732a4f21cf4974a7b5caba83707c76 : SUCCESS in 17m 06s\n- swift-tox-func-encryption-py38 https://zuul.opendev.org/t/openstack/build/62f1205f585d49dda8a4245329b1fd51 : SUCCESS in 16m 43s\n- swift-tox-func-ec-py38 https://zuul.opendev.org/t/openstack/build/05fd8e4a64bf4c7cbab3ca9916ffe43b : SUCCESS in 16m 09s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/f0f3e3f7d9184c9e835b8ff8f5d84550 : SUCCESS in 6m 00s\n- swift-tox-func-s3api-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/83860103fd0241b2933d753a633eac13 : SUCCESS in 14m 12s (non-voting)\n- swift-tox-func-s3api-tests-tempauth https://zuul.opendev.org/t/openstack/build/d123930ec2ac401896a2554dd81eb5ec : SUCCESS in 6m 28s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/7faa14fd90184ad6915dbf620eb1a3f9 : SUCCESS in 42m 35s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/a51d7b097af34525b724aed860a4bcf6 : SUCCESS in 34m 42s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/36b6e7c5e2624e588f298f68e7f5a38b : SUCCESS in 34m 59s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/c1fdf06fad4c453e8ec0de94b8ff5702 : SUCCESS in 19m 14s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/58192ab2c8b94b4991015c95ced53b7a : SUCCESS in 3m 52s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/93c50f68f48e4f1ca767653e21cea4ce : SUCCESS in 21m 51s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/d9ed2849f8234c68bc6e92422bbb1526 : SUCCESS in 45m 10s","accounts_in_message":[],"_revision_number":10},{"id":"cf854f903b4eab0f1b96bec9338cb2b884bc6269","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-08-05 06:51:30.000000000","message":"Patch Set 10:\n\nBuild failed (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/d48f85421ecc4e6c8d52fb5184791d88\n\n- swift-tox-py38-arm64 https://zuul.opendev.org/t/openstack/build/325074a413ad45eb8c2549a30e11ff37 : SUCCESS in 1h 00m 46s\n- swift-tox-py39-arm64 https://zuul.opendev.org/t/openstack/build/e20f2c3fb0e44e1889b7ed2cbd70bd85 : TIMED_OUT in 1h 31m 00s\n- swift-tox-func-encryption-py38-arm64 https://zuul.opendev.org/t/openstack/build/3569dba451d8463eb4fc7e410aeac97b : SUCCESS in 1h 12m 34s\n- swift-tox-func-py38-arm64 https://zuul.opendev.org/t/openstack/build/eb64e1f390f84712ac382b1dbaef607e : TIMED_OUT in 1h 30m 50s","accounts_in_message":[],"_revision_number":10},{"id":"aaffc14df68583aa1e4621c2c8dbaaabda3aaa09","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2024-08-12 23:43:03.000000000","message":"Patch Set 10:\n\n(2 comments)","accounts_in_message":[],"_revision_number":10},{"id":"3b159100acff96b50c1e9b003f6a9c5bad8a746b","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2024-10-30 08:44:35.000000000","message":"Uploaded patch set 11.\n\nOutdated Votes:\n* Verified+1\n","accounts_in_message":[],"_revision_number":11},{"id":"d84d69d9ac3d5e515f4b89712f5ba9a3fc8f76d0","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-10-30 09:38:36.000000000","message":"Patch Set 11: 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/c3de2a6b49244b7d8f9fcfc404c2e2e9\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/7c9e87877c5c427685eef5218a8356d9 : SUCCESS in 5m 29s\n- grenade https://zuul.opendev.org/t/openstack/build/81e3da531c7e44a8ab9cc2eece58284a : SUCCESS in 37m 23s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/aea71440523347839c3d4b6d14c738fc : SUCCESS in 35m 56s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/fe28a068b1074e23b3f8373cd1ff00f1 : SUCCESS in 38m 12s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/9523d3f0e75242d28c82d42b49b6a08c : FAILURE in 37m 08s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/f8ea2721851942d7af19af7e25a40db1 : SUCCESS in 17m 15s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/68202475b38f4f419a6c09821c111887 : SUCCESS in 10m 27s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/da3484c86bd54789bc79d26a9c4bfa94 : SUCCESS in 17m 56s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/911941424dd74841a4c84b54741fb934 : POST_FAILURE in 33m 41s (non-voting)\n- swift-tox-py27 https://zuul.opendev.org/t/openstack/build/87767e581b464a08ad3e9cbc01b7d625 : SUCCESS in 19m 29s\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/8a2e7f3002cc4d9c83044297d8365acd : SUCCESS in 9m 27s\n- swift-tox-py38 https://zuul.opendev.org/t/openstack/build/5427f68f83d94afb9433aa315557eddf : SUCCESS in 18m 54s\n- swift-tox-py311 https://zuul.opendev.org/t/openstack/build/17a0ed948b46402bb3b9ecb03b43af21 : SUCCESS in 9m 42s\n- swift-tox-py312 https://zuul.opendev.org/t/openstack/build/deedb4e9c1054aaf9e45559a1a098f5c : SUCCESS in 29m 49s\n- swift-tox-func-py27 https://zuul.opendev.org/t/openstack/build/491c7a4753bb4231883e7375eeb3c358 : SUCCESS in 10m 03s\n- swift-tox-func-encryption-py27 https://zuul.opendev.org/t/openstack/build/258118ee5e874b9ea2f897e6c662a50c : SUCCESS in 17m 37s\n- swift-tox-func-ec-py27 https://zuul.opendev.org/t/openstack/build/d5743c37e2be4c9d96cc72c3fdfe0094 : SUCCESS in 10m 32s\n- swift-tox-func-py38 https://zuul.opendev.org/t/openstack/build/99c10a0cdd0a4d038d5439b3b21b077e : SUCCESS in 14m 07s\n- swift-tox-func-encryption-py38 https://zuul.opendev.org/t/openstack/build/6e6d2fb84af6400db646a74aa56e6f24 : SUCCESS in 8m 46s\n- swift-tox-func-ec-py38 https://zuul.opendev.org/t/openstack/build/a07783f87de04f619a7a4a3e9f205208 : SUCCESS in 15m 07s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/5ca89162a60746df880fccffb3a7ffe3 : SUCCESS in 5m 56s\n- swift-tox-func-s3api-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/b3966a92f041447fb229a1ecc2e112b0 : SUCCESS in 14m 45s (non-voting)\n- swift-tox-func-s3api-tests-tempauth https://zuul.opendev.org/t/openstack/build/7f0a992185264c04a2bf91c9fa3e79d0 : SUCCESS in 4m 51s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/b6e0adb2039949059069f140f2e54168 : SUCCESS in 45m 43s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/649a07264fbe4c27ad558289b5b69aec : SUCCESS in 53m 21s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/1488510b67b34a7aa696d32f7bb73b9f : SUCCESS in 36m 26s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/f4ced9385fb049b49f581ec27e63c13e : SUCCESS in 13m 58s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/38aa4034b4b84b7ab17cffec583719ce : SUCCESS in 3m 49s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/17f803837a3c44d8a1be1b2031a6525d : SUCCESS in 17m 12s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/c882f649fa3b4384b09cc20db466ea22 : SUCCESS in 50m 39s","accounts_in_message":[],"_revision_number":11},{"id":"278f0b275f96c84a425f5f1b163ae5fb35f2438c","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-10-30 12:15:00.000000000","message":"Patch Set 11:\n\nBuild failed (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/3397a3650e7e4bccb0c7564ec296e580\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/03b08893478445928821fd73d3ef5a1f : TIMED_OUT in 3h 01m 17s","accounts_in_message":[],"_revision_number":11},{"id":"5eb8f14361e6885307c12a9d1a5a5459817c367b","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2024-11-06 06:31:32.000000000","message":"Uploaded patch set 12.\n\nOutdated Votes:\n* Verified-1\n","accounts_in_message":[],"_revision_number":12},{"id":"0bee6e9a8907f5ed274353e1d222e313a96fd458","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-11-06 07:42:35.000000000","message":"Patch Set 12: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/9e9de4921d28458f8d67f4722f35bdd0\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/a08de1b5e897419ca7a4d0a12c656cfb : SUCCESS in 6m 53s\n- grenade https://zuul.opendev.org/t/openstack/build/83dfb14f5617443993f3c86ed86b2297 : SUCCESS in 39m 34s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/313e53389ffb4a7abe7d7e0c702b9e90 : SUCCESS in 40m 20s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/4ce75024fcda4ec299a5a50cea1a6fed : SUCCESS in 34m 21s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/e6143f19fff445aa95b16d169cf92e92 : SUCCESS in 44m 02s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/711ce4b2a3354557b8b6f233660a1a6c : SUCCESS in 17m 04s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/2c08e781a0234c7f8260591c1907011d : SUCCESS in 20m 50s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/91829924091b4ae28749775886f97582 : SUCCESS in 16m 58s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/d4bcf7dd924c402ba56f3984b4c2ac0e : SUCCESS in 4m 55s (non-voting)\n- swift-tox-py27 https://zuul.opendev.org/t/openstack/build/757d2598cd54448196c2940b882f7830 : SUCCESS in 10m 26s\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/a8103d03413444d2baedbbf9940abffa : SUCCESS in 18m 49s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/65caee99b2bb4c889a48e9820c3acd28 : SUCCESS in 15m 55s\n- swift-tox-py312 https://zuul.opendev.org/t/openstack/build/c3659a1b6e3d481ea14d68d83779feb5 : SUCCESS in 28m 26s\n- swift-tox-func-py27 https://zuul.opendev.org/t/openstack/build/a5f93763bbe14f35a1f1006856811cb3 : SUCCESS in 10m 23s\n- swift-tox-func-encryption-py27 https://zuul.opendev.org/t/openstack/build/0387379a64054faab3b3e788b19acb6e : SUCCESS in 14m 57s\n- swift-tox-func-ec-py27 https://zuul.opendev.org/t/openstack/build/d2f674653a544c4ea342a7404d866f2a : SUCCESS in 18m 07s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/bccc5deaab0841c1adfa1bf1af39cd7b : SUCCESS in 9m 42s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/88e9db1251ea4dc390c013c1b522a4b8 : SUCCESS in 14m 58s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/f452bc75dceb417396d750ac1b046607 : SUCCESS in 10m 08s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/73efd5b9d3474a4c82a4aabfb875836d : SUCCESS in 6m 06s\n- swift-tox-func-s3api-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/3b99c6b420d84624abb69235d42d9acb : SUCCESS in 9m 36s (non-voting)\n- swift-tox-func-s3api-tests-tempauth https://zuul.opendev.org/t/openstack/build/2ea9a37195b947e39282f9c998d2714d : SUCCESS in 6m 40s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/3bdf45f19c02480991fd6b02d57175de : SUCCESS in 44m 34s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/426b29735a7d4258aad5fd76b4dccac9 : SUCCESS in 54m 41s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/64ccde14d6f544e5aba71bfe9fc54f9a : SUCCESS in 31m 43s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/871d82ad9f8b47658a74bb98006d5ee3 : SUCCESS in 20m 32s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/0b92e2b9376843f39e603580a5e44e34 : SUCCESS in 3m 38s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/c6426b37178d49bbb87d7ea60f7ff2e2 : SUCCESS in 14m 49s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/8f3c29d2283f435eb9c4345dd237963f : SUCCESS in 1h 04m 46s","accounts_in_message":[],"_revision_number":12},{"id":"1e70de622b6748b9a3559827ba2ba6884eea6fd8","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-11-06 07:48:55.000000000","message":"Patch Set 12:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/6bd3afe1957f4b2c89b569bc98e66f08\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/bc3dd2253d0f4cb78ab8bf81c54be9b2 : SUCCESS in 1h 15m 01s","accounts_in_message":[],"_revision_number":12},{"id":"5dfeb23fede4eb3bd2724a57767079b6022c6b02","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2024-11-06 08:31:25.000000000","message":"Uploaded patch set 13.\n\nOutdated Votes:\n* Verified+1\n","accounts_in_message":[],"_revision_number":13},{"id":"d31c46fbe821c85f9ce1e4d8ffc26b0871516a2d","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-11-06 09:26:04.000000000","message":"Patch Set 13: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/258637a9ce3b4439976f49ee4a549db9\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/6a81b74577574f8390b287a01dcb6562 : SUCCESS in 5m 42s\n- grenade https://zuul.opendev.org/t/openstack/build/2b70a8233770466faa7021065e20331a : SUCCESS in 37m 10s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/400b8a3a95a8441c924f313332df9371 : SUCCESS in 37m 10s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/e34009723f2c418cb242d0928282f66a : SUCCESS in 43m 20s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/9e78d15cfbf64b359554d4102304299a : SUCCESS in 53m 35s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/fd75c55c9360455492f03e15c93deaf9 : SUCCESS in 22m 25s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/75464694b8454d93860f48ffd602411d : SUCCESS in 22m 32s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/50407a956c7240de958f1d4365134dcd : SUCCESS in 19m 02s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/5d195f31de664d578ecf4cf8ad6f196b : SUCCESS in 4m 34s (non-voting)\n- swift-tox-py27 https://zuul.opendev.org/t/openstack/build/37b0f004fb224b15ae11ea0c54abb26c : SUCCESS in 26m 47s\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/f7472d0f683f4462966a73bd6db420fe : SUCCESS in 15m 24s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/ebad7a05d77b4574bcfdbf4d1e00af0d : SUCCESS in 23m 06s\n- swift-tox-py312 https://zuul.opendev.org/t/openstack/build/8608c32cedfd4d49be2838105ed0c0c4 : SUCCESS in 20m 44s\n- swift-tox-func-py27 https://zuul.opendev.org/t/openstack/build/1a29a672ab0640d2b9b4568027e66c33 : SUCCESS in 20m 37s\n- swift-tox-func-encryption-py27 https://zuul.opendev.org/t/openstack/build/3f706feaf33245ba8e9c5010b8a386c2 : SUCCESS in 14m 20s\n- swift-tox-func-ec-py27 https://zuul.opendev.org/t/openstack/build/f14724bec6d3456ba346e963cfdc282e : SUCCESS in 16m 11s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/fa5011d6dc2a4a89a19600a813e50819 : SUCCESS in 13m 14s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/3a111c45ba8744ba8b57f9d515bc0b0e : SUCCESS in 13m 27s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/b8ae0a200f84448590d947f03b3d5654 : SUCCESS in 9m 40s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/82093828ef11421e8b337a75f33ea0f0 : SUCCESS in 4m 29s\n- swift-tox-func-s3api-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/a67fbeec7a884157a52d91422c3049c7 : SUCCESS in 10m 17s (non-voting)\n- swift-tox-func-s3api-tests-tempauth https://zuul.opendev.org/t/openstack/build/98ccb59876a14c4a9766b759e5dbc632 : SUCCESS in 4m 53s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/67d62dc82e034774b861d0bb58d51ba1 : SUCCESS in 37m 41s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/9753f9a1e5314edf806077f6038cc931 : SUCCESS in 29m 19s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/54a1d9e2ced64808957471de95f36652 : SUCCESS in 29m 17s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/9a0988d10c034bfd8a7f7a582d3dda81 : SUCCESS in 10m 50s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/709865680338482fbee680672a43d59e : SUCCESS in 2m 55s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/70f695fb88374b8e996c0411293b92cd : SUCCESS in 11m 41s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/685c2fa2fc3a4864bb3173a79c05d7d6 : SUCCESS in 46m 29s","accounts_in_message":[],"_revision_number":13},{"id":"c498566364a547e7e3da558958c168bdbdd6c45a","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2024-11-06 10:26:15.000000000","message":"Patch Set 13:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/97e32c808f5a4c828e9d4dc3239ce9f6\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/ff43aa33a76044c9ad8ec3e5cf5aacc1 : SUCCESS in 1h 52m 42s","accounts_in_message":[],"_revision_number":13},{"id":"47f35993f220a7a8b391922190d72601a93e81f2","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"date":"2025-04-10 23:22:52.000000000","message":"Uploaded patch set 14.\n\nOutdated Votes:\n* Verified+1\n","accounts_in_message":[],"_revision_number":14},{"id":"2545224c142885af8c990c56220100558ab6466e","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-04-11 00:06:20.000000000","message":"Patch Set 14:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/f154292ef3c847eab488bb22cff60883\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/57ce14a28b734417a89b8963ebcd486b : SUCCESS in 41m 28s","accounts_in_message":[],"_revision_number":14},{"id":"42835db1dfc1de9efacb49ccae2caf25a0cb72f2","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-04-11 00:29:31.000000000","message":"Patch Set 14: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/9ffd8f0f3e734fedb4526c3b5cdd9c16\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/3c3576b2262d48f8af418c3c5624ae3c : SUCCESS in 10m 27s\n- grenade https://zuul.opendev.org/t/openstack/build/7af08212ed2843d7bd23a017cc6f1c17 : SUCCESS in 47m 12s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/fc1994a486774e8784f1c363ed2860d1 : SUCCESS in 54m 00s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/f4b0dd4c8e454504be9007ba4d2a923a : SUCCESS in 42m 10s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/85a4b9b426174caca16f6a3856b4d1b8 : SUCCESS in 1h 05m 59s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/0f0eeef8cc424af9b3be21601a2f8d11 : SUCCESS in 15m 57s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/b089e306b0db4ad3a9a085d370adfd48 : SUCCESS in 20m 26s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/82b7ad6aad654c41ab223c4dcbb8fa81 : SUCCESS in 15m 56s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/5c4e961f3a7c4602bdb05b4d8ec3b7e8 : SUCCESS in 5m 21s (non-voting)\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/69942db2aaad4e79945947767d9492ac : SUCCESS in 20m 21s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/c7e7b603a5c84b05b517981f7fc8f266 : SUCCESS in 15m 46s\n- swift-tox-py312 https://zuul.opendev.org/t/openstack/build/7409c54c66b148b9a92feea307ed89c2 : SUCCESS in 15m 46s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/82fd082bea2c4ee1a7b054a23fd8646a : SUCCESS in 14m 16s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/788bc142667a43b2afc494ef9cf380a0 : SUCCESS in 15m 15s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/6b6b2681dcfe4a2a91dca334c61cc029 : SUCCESS in 15m 02s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/69fe264506574317a0934d0a544b362c : SUCCESS in 3m 35s\n- swift-tox-func-s3api-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/894beb3eee794db4aac24a05971ea4b6 : SUCCESS in 13m 23s (non-voting)\n- swift-tox-func-s3api-tests-tempauth https://zuul.opendev.org/t/openstack/build/bf1a0c6b81c54a7d8e191ccce5230312 : SUCCESS in 6m 18s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/4cb51ab76a254fe5bfb2c783a95d471b : SUCCESS in 37m 25s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/ad9cec0e8aac4fb8818e65a186724045 : SUCCESS in 21m 54s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/5e787289efda498ba5cc2d58bfd9c3f4 : SUCCESS in 49m 47s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/6efb7eded5534cdabe0c88b19eb58f7f : SUCCESS in 17m 54s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/d99443a38b9542a0b3293eb1821f5dc8 : SUCCESS in 3m 56s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/ca1ce831ae7e49098731a77af693b56d : SUCCESS in 20m 04s\n- tempest-integrated-object-storage-ubuntu-jammy https://zuul.opendev.org/t/openstack/build/82c93b7594cb4a8f9953bf5c98d6a833 : SUCCESS in 37m 35s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/faecf2917c114e809b899ce09e8c6f2e : SUCCESS in 58m 54s","accounts_in_message":[],"_revision_number":14},{"id":"0b7045c514e31099df96198d2a88ccec4b2aa886","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2025-04-11 04:54:09.000000000","message":"Uploaded patch set 15: Commit message was updated.\n\nOutdated Votes:\n* Verified+1\n","accounts_in_message":[],"_revision_number":15},{"id":"4252c8275dc8bd2af7a2ab1c1c63001dff3c200e","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-04-11 05:33:55.000000000","message":"Patch Set 15:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/e65fcd3070c54a9eb229bdfd6232e302\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/50bf4efd11a540ba8b9ceb8a392431a2 : SUCCESS in 37m 56s","accounts_in_message":[],"_revision_number":15},{"id":"5823e8e1036414321f203386e6d2dc6a499ac2a4","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-04-11 05:40:32.000000000","message":"Patch Set 15: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/997a415e2fd44c13a7dc557d63c57564\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/bb9682ab8c8a4269ba899d45a9324196 : SUCCESS in 4m 37s\n- grenade https://zuul.opendev.org/t/openstack/build/1c487f5efd834e6fb0b7ba1dfbf74f2a : SUCCESS in 25m 50s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/1c2351f12a074181bea47be94b80526a : SUCCESS in 27m 29s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/05aa5246fe6f45dc9b650723837266f3 : SUCCESS in 27m 21s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/38bbb6659ced49d183f315af9b257d95 : SUCCESS in 36m 29s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/bbbb0e999f094ce6b023e98ebb0a371b : SUCCESS in 9m 54s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/80028461d51d4eae8aba91ec1958388f : SUCCESS in 11m 55s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/01d59adfd9db42afb79fc3a8478d41d5 : SUCCESS in 17m 41s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/89ac6698ad2c4c15aadcf571f0f5f8ef : SUCCESS in 3m 14s (non-voting)\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/92db65a25ed147db9f999cf75e95332c : SUCCESS in 19m 43s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/ab1043fe9f0a4ef08504bfd4782f6ab9 : SUCCESS in 15m 48s\n- swift-tox-py312 https://zuul.opendev.org/t/openstack/build/00a08c958f4445a0af76225b5d8b43da : SUCCESS in 17m 23s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/3e0ed064bbe94c4da95ca48fcd6770ed : SUCCESS in 13m 16s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/9d55fe1e0bd2440b869e6e42aa6b753c : SUCCESS in 12m 19s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/c7168d4fe0354d5bbced175f7d6bcb47 : SUCCESS in 9m 20s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/3682ece9d8cd4e1c9821825131307349 : SUCCESS in 6m 12s\n- swift-tox-func-s3api-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/c100ac0c995d4185ada1b208ad6b1645 : SUCCESS in 14m 12s (non-voting)\n- swift-tox-func-s3api-tests-tempauth https://zuul.opendev.org/t/openstack/build/3560afb1a7444596bfde0f5f615a0983 : SUCCESS in 3m 26s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/6c6720232677428f8a47569864f480d7 : SUCCESS in 45m 36s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/c895e20dba474cca9af93e850802abab : SUCCESS in 30m 30s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/346a83353edd404eaaedaaa53943fc36 : SUCCESS in 31m 02s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/68a493cf77fe43cf82b50c3fe6902d0b : SUCCESS in 15m 45s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/a4347f749b9c4dfe8ff73e6c6d19ebf2 : SUCCESS in 3m 23s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/473959984fd14405bdfee9a8b5ce3e14 : SUCCESS in 20m 51s\n- tempest-integrated-object-storage-ubuntu-jammy https://zuul.opendev.org/t/openstack/build/fb8b8fd486cd4c0a8a192a293bca72ed : SUCCESS in 35m 41s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/42ef935ffb664f7db173029cc6fc5aa0 : SUCCESS in 40m 53s","accounts_in_message":[],"_revision_number":15},{"id":"097c5d465774e22e478efe901ac437095bc91916","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"date":"2025-05-20 15:56:54.000000000","message":"Uploaded patch set 16: Patch Set 15 was rebased.\n\nOutdated Votes:\n* Verified+1\n","accounts_in_message":[],"_revision_number":16},{"id":"69d5b4d84bbef47862c8032e9a7dd686a814d1cc","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"date":"2025-05-20 16:56:17.000000000","message":"Patch Set 17: Patch Set 16 was rebased","accounts_in_message":[],"_revision_number":17},{"id":"1bc76ed03bbe9a4e9ccc81fe75744de33dd2bfec","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-05-20 18:18:50.000000000","message":"Patch Set 17: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/c5418e3c874244b1876222890eb0e9d7\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/2b0bd49121634e4abf9393e66edd0786 : SUCCESS in 9m 57s\n- grenade https://zuul.opendev.org/t/openstack/build/3b710573e922461e87244cd27bf32dcc : SUCCESS in 1h 01m 07s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/9213eb48813147b0854f1fcb49159632 : SUCCESS in 1h 03m 43s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/e8b4c3793e1e404e856ac6965520a6e3 : SUCCESS in 51m 13s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/a669b2065f8c4f0988edc0453b441647 : SUCCESS in 1h 04m 14s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/2ca97f14d4dd4da3adb94d356cf332f0 : SUCCESS in 20m 49s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/4f17f12cef594c6d85804f0909965cc9 : SUCCESS in 20m 09s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/699a3de4ffb04038a4f1fae024c33e66 : SUCCESS in 21m 00s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/71aca0db1b0a4c62837ada29c8797c7d : SUCCESS in 5m 38s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/0b6b4fb8fcf2475c8847e8d2b3c37bef : SUCCESS in 21m 54s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/6edb6bd9b17c4e7d89d6b4221c6e57a5 : SUCCESS in 21m 44s\n- swift-tox-py312 https://zuul.opendev.org/t/openstack/build/cb094ba3d70e456db77b23e831bf0adb : SUCCESS in 28m 07s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/d106a6a163d0416b9622c4281c03d2ab : SUCCESS in 39m 52s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/a91afe539e9e4a96b709046b36dca8fb : SUCCESS in 14m 52s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/143b217b9e7b41d4bfa7dba79316eccd : SUCCESS in 15m 15s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/c203b3ff1aae48328125eaac7d34a677 : SUCCESS in 18m 46s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/867de1758b5e4fb8aab9f69506a6e3c2 : SUCCESS in 6m 31s\n- swift-tox-func-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/8973cf1861134bb689e8edf4634f144e : SUCCESS in 15m 16s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/f2ae33b2a2514090ae8a1300f7c6f8f4 : SUCCESS in 6m 42s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/92aa583d9eb34cf385d0cdac165dca84 : SUCCESS in 1h 04m 56s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/323ee8a61974458d958f8637c86858dc : SUCCESS in 46m 31s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/81a3b2b4596d43cd84c268d3ab713766 : SUCCESS in 45m 18s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/07bf58ab8b3f4fe2b0d03959be20ee73 : SUCCESS in 19m 51s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/1f663ad5574c4ac9ab81404373e39a1b : SUCCESS in 4m 23s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/4013074209bb4f2b82d9df066bc93b75 : SUCCESS in 18m 10s\n- tempest-integrated-object-storage-ubuntu-jammy https://zuul.opendev.org/t/openstack/build/5eca2fd85b8b49989d1d32c011733e02 : SUCCESS in 44m 44s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/da81b9d6fd5c4e5d8f677488745a1617 : SUCCESS in 55m 46s","accounts_in_message":[],"_revision_number":17},{"id":"5661869cb499c3a2d58df18b1d4f5c2854c0f4e1","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-05-20 20:13:30.000000000","message":"Patch Set 17:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/946f3bdf29154f7bae3651e6b51d8854\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/174149982d1e4200b25e86f9519e67b3 : SUCCESS in 1h 14m 49s","accounts_in_message":[],"_revision_number":17},{"id":"9b255cf0d78057eb37c5674f585facfd8a677f27","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2025-12-10 22:53:12.000000000","message":"Uploaded patch set 18.\n\nOutdated Votes:\n* Verified+1\n","accounts_in_message":[],"_revision_number":18},{"id":"509aae2832db506faf1dda4b2660d07c93c61d7d","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-12-10 23:37:08.000000000","message":"Patch Set 18:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/3a0fbcec78d645d0a44b538b3df4eebf\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/4cd47f8e492e4d55818a5a07d2db9931 : SUCCESS in 34m 25s","accounts_in_message":[],"_revision_number":18},{"id":"bb4a65d378a962dbbd2961d9ec88205dcc13ee51","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-12-11 00:23:33.000000000","message":"Patch Set 18: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/9a554fa8d316410fb9071077e4c43f01\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/12225721546f451581b73ede8a19ff2e : SUCCESS in 10m 33s\n- grenade https://zuul.opendev.org/t/openstack/build/0aca7ad4e9474274b5a6c9ab8f93a422 : SUCCESS in 42m 54s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/a9b07d9047424aa7b8baa87e47dea38f : SUCCESS in 1h 01m 06s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/ec177e34d4844cedb67c37657abeb62f : SUCCESS in 37m 43s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/df07c5d3bc7342379987e527cd9cdc1b : SUCCESS in 46m 14s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/73f7a212fddb4ef6a341d09aeed5105d : SUCCESS in 11m 08s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/03e27f423d164f75a24d5dabba2d0d4a : SUCCESS in 14m 51s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/0ad5590e00b04f7e839c86daeb09a068 : SUCCESS in 11m 42s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/50196fc61e454e16b467af19b445a478 : SUCCESS in 7m 08s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/0965d8f22d7d4646bd84dddbfd5bff47 : SUCCESS in 16m 41s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/270dc83ec3ac4dba8ac018ddf74721cc : SUCCESS in 18m 10s\n- swift-tox-py312 https://zuul.opendev.org/t/openstack/build/b9c33b5ac18d46969f508230f4ef98bb : SUCCESS in 18m 20s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/0af2a248b0184536b3decb481f8bbdae : SUCCESS in 12m 03s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/8afdbf2e4ebf454d91a27138e9b02e98 : SUCCESS in 11m 41s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/94392fe3aead40da8ca5bf90000d4191 : SUCCESS in 15m 17s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/117f15cee3db4d2cb9979131be37013c : SUCCESS in 14m 32s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/847fe1f5cf844e769a88fb7ad1195468 : SUCCESS in 7m 10s\n- swift-tox-func-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/af251d748c92430da7e7ec36c2f34f0c : SUCCESS in 18m 48s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/cfb96a0fd8ab4a5e9f4b6a5cdb8fa217 : SUCCESS in 10m 53s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/7cd25d6256e14bd79b14680f18930c2f : SUCCESS in 34m 47s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/4ff2e40b4a6349ccb0e95099701da69b : SUCCESS in 21m 17s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/a6576a15b89d4f80b07ac322ebea7cff : SUCCESS in 23m 37s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/a95b24eec554486f9da4bcda06a641e6 : SUCCESS in 28m 07s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/f3f1a551e8b94034b996a9d1d400b97e : SUCCESS in 4m 59s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/553523e301344b8f9e5814b51d7e4b7f : SUCCESS in 9m 56s\n- tempest-integrated-object-storage-ubuntu-jammy https://zuul.opendev.org/t/openstack/build/0ed1cfc1e21742b198509c235e519f59 : SUCCESS in 29m 36s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/e05de793d4824ff084caf981f8cc0ac7 : SUCCESS in 1h 00m 38s","accounts_in_message":[],"_revision_number":18},{"id":"a250e9e6c3ee1b87440f2ef0acdd238c15bdee26","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"date":"2026-02-27 18:39:13.000000000","message":"Uploaded patch set 19.\n\nOutdated Votes:\n* Verified+1\n","accounts_in_message":[],"_revision_number":19},{"id":"9f8df7147423640b5866a0f41c058bb13874de5a","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-02-27 19:51:06.000000000","message":"Patch Set 19: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/171e3ac7b2af44489433de5bacff7c69\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/b89cc5a939f442c0b1ab5cff09f0f365 : SUCCESS in 7m 48s\n- grenade https://zuul.opendev.org/t/openstack/build/cad1ee72032a403fbe0dbc70f1f17eba : SUCCESS in 1h 05m 45s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/2309bbe9103d47cc8995e38e63615621 : SUCCESS in 1h 02m 22s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/7c642939688a4f25a84977d7613ccfc7 : SUCCESS in 38m 02s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/352ad2f52443496ca0031bdbdd450f14 : SUCCESS in 36m 48s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/d832982fde58476f917923390e723f5f : SUCCESS in 11m 42s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/93d6da26ac9a4936a25e679257e3d78d : SUCCESS in 22m 35s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/55c9c988cab646b58133f84f53ac093c : SUCCESS in 20m 45s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/91176cbbea4647ceac3c9e5be830a6e8 : SUCCESS in 8m 22s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/b94d1bbbebe24d8685faae8281847ff9 : SUCCESS in 25m 19s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/9a19902c45c8479e9be1c93667890498 : SUCCESS in 21m 39s\n- swift-tox-py312 https://zuul.opendev.org/t/openstack/build/0bbba600785a4393b01e0bd89ba4704b : SUCCESS in 28m 08s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/c0c75d9458fb47edab9c1b84262d3df8 : SUCCESS in 21m 40s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/01bb5d6616334873b9b9eb4cd8f0146e : SUCCESS in 14m 47s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/5a67012b610244b287c4e6501fbc2711 : SUCCESS in 14m 55s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/01aa56a241a54b30837ef22707114f2c : SUCCESS in 8m 13s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/8f3ad0ffde494cdaa7fb7cf8dfb7d37c : SUCCESS in 3m 30s\n- swift-tox-func-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/b74e163ed6e745d996553b6cb7b5bad6 : SUCCESS in 18m 20s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/bbff6dfe72d9441d9951ac0fb72323bc : SUCCESS in 5m 59s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/0fd1f8aca05e4fa384b506915715cf68 : SUCCESS in 50m 23s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/32d7085efc884d878cf7db4975cbd9b2 : SUCCESS in 57m 10s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/ffa03339d70243af9045e422b6a76a5e : SUCCESS in 59m 04s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/58a6a5d4ac454abeb17a44271a7085a7 : SUCCESS in 10m 43s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/3bfe0068179e4a63850d43a14c4004b5 : SUCCESS in 3m 57s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/c02c6739fe1c41bcb763d432847cbce2 : SUCCESS in 26m 38s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/38c7a67e88bd47529a29d2d0d89aff0e : SUCCESS in 30m 34s","accounts_in_message":[],"_revision_number":19},{"id":"450a51853d8f7cd4c904552004990c033d620860","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-02-27 21:01:14.000000000","message":"Patch Set 19:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/5ab26e69495f4f2abf26a5014465605e\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/c6df0ed568dd40e8af01def197f0c4aa : SUCCESS in 35m 02s","accounts_in_message":[],"_revision_number":19},{"id":"cdc7bc05339072d5ad0f74607d31d2a4bb803c34","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2026-03-18 14:39:47.000000000","message":"Uploaded patch set 20: Patch Set 19 was rebased.\n\nOutdated Votes:\n* Verified+1\n","accounts_in_message":[],"_revision_number":20},{"id":"73860be75377ed20913fc3f372f06d8a54b69136","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2026-03-18 15:18:47.000000000","message":"Uploaded patch set 21.","accounts_in_message":[],"_revision_number":21},{"id":"4b74769523127e6bfacc08a2906ffff0309dc337","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-18 16:42:26.000000000","message":"Patch Set 21: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/80982d7c94f449ef8b61d75df0d30791\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/c576c67cd3864e5ca1e6c7b1506434ca : SUCCESS in 7m 43s\n- grenade https://zuul.opendev.org/t/openstack/build/8beea15b833f401082e4f1beeff8d837 : SUCCESS in 55m 41s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/1c894a5e70e14874992204f06cfa2c9e : SUCCESS in 34m 49s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/ef3c666baa074e4cadb37e290ec5398c : SUCCESS in 1h 10m 10s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/67e02dfea4524e02a1ed4ee7be28a331 : SUCCESS in 1h 08m 29s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/4061d91a565b45bdaf18f2fc431ca4e8 : SUCCESS in 13m 17s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/5333468ffeae4ca29cbf14d49e493f2a : SUCCESS in 21m 33s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/eab8a64456fb4cb8ac3e11fd1955a295 : SUCCESS in 21m 01s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/1528201691f2457dbc3d1fabd9aef6d9 : SUCCESS in 6m 55s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/5408b014c4114659ac1ad1fe58b68535 : SUCCESS in 25m 53s\n- swift-tox-py310 https://zuul.opendev.org/t/openstack/build/e3ec7490aba241b999ba384392d2ea2d : SUCCESS in 28m 34s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/18bef352924f42448fc14febffcbc9f6 : SUCCESS in 29m 08s\n- swift-tox-py314 https://zuul.opendev.org/t/openstack/build/981cf0d60eb841cc9427f99ce80f931a : SUCCESS in 20m 33s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/6f680df64198474c9ffb3f757a7a05a0 : SUCCESS in 15m 54s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/7717df2eba794d6fb44399c3211c7f36 : SUCCESS in 15m 13s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/ac5d02c6c50b4f1d9eeeda196181bd83 : SUCCESS in 17m 26s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/f3bcb06e10624ab9b0cf915cea6976b6 : SUCCESS in 9m 10s\n- swift-tox-func-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/c8b704494ffb4f4690b02db43c391d3e : SUCCESS in 17m 56s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/6b623c6d10864e31aa2797d0cef82ec4 : SUCCESS in 7m 56s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/06c9d4c0dae44d9280b7f227b23bdef8 : SUCCESS in 55m 16s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/183d1dc88a68438894fca61dcfc3a3ba : SUCCESS in 57m 24s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/c06090dcde7f406c821b762244744e4b : SUCCESS in 50m 10s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/7fa3ea321fe343f5ba15dff07021ef26 : SUCCESS in 30m 19s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/7f2bec7fb32541798266d58185b2da28 : SUCCESS in 4m 52s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/bd1676d60dd2446195e0f1ce7125a726 : SUCCESS in 13m 41s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/d66e197c30294941a50f29d58a4d0a88 : SUCCESS in 54m 06s","accounts_in_message":[],"_revision_number":21},{"id":"ddc35118abb2615087c22eebe8c66bfd75bb800f","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-18 19:35:40.000000000","message":"Patch Set 21:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/bfaabfbce9c6460aa85b937a682e87cc\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/764c029d00274d23aa739ed56e3eccd2 : SUCCESS in 1h 17m 55s","accounts_in_message":[],"_revision_number":21},{"id":"1df8b027fc7440fff83336e63ac31841bb70162e","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2026-03-24 17:58:55.000000000","message":"Uploaded patch set 22: Patch Set 21 was rebased.\n\nOutdated Votes:\n* Verified+1\n","accounts_in_message":[],"_revision_number":22},{"id":"124c747e73a89e72927a7ba4ce06f26fea42cf4c","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-24 19:30:46.000000000","message":"Patch Set 22: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/b21ea8be8fee471885108e3731d92a2a\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/0c4a604b7d6743a090bacaababa75712 : SUCCESS in 11m 32s\n- grenade https://zuul.opendev.org/t/openstack/build/b2dd67880c664f369a579c5ee542ae07 : SUCCESS in 1h 12m 57s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/54c8cf65c28e4c4a9554f0d04a7861f9 : SUCCESS in 46m 14s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/fe2176c3bfec473494e66a1e91d436a6 : SUCCESS in 58m 46s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/dbb8724f6e7444c489eb1078f44ac7ae : SUCCESS in 50m 15s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/033717d5aa984859bbe33908393c2307 : SUCCESS in 20m 45s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/e5794a822a6e4445b3d9404a4068df6d : SUCCESS in 23m 36s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/6cf7f42a34c54e1983069a43c7bfddda : SUCCESS in 22m 51s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/bace12f2d45648a894335b595a078b79 : SUCCESS in 7m 31s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/576bf9edb55c4812808dc986c040dc90 : SUCCESS in 24m 50s\n- swift-tox-py310 https://zuul.opendev.org/t/openstack/build/b5b7e8a0221248f09830863982df903e : SUCCESS in 23m 27s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/ec2e0f0a6c244634bc9593d23a3823a2 : SUCCESS in 13m 36s\n- swift-tox-py314 https://zuul.opendev.org/t/openstack/build/887a8adaa09c4d28a11d7973ba602734 : SUCCESS in 23m 55s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/4e30821464c64e45a35825e44147a870 : SUCCESS in 9m 18s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/1726ae4152164b81b6aef4499ba543f4 : SUCCESS in 10m 14s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/cbb4f7f940924a60be9ce27f58e123f3 : SUCCESS in 16m 10s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/943c3b2debf743ab8efd6fe36193e45f : SUCCESS in 7m 28s\n- swift-tox-func-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/a2ef2674599e40bf842eae498fda36dc : SUCCESS in 16m 31s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/e3f8d1fe0aa0451abee68d263bd50ac4 : SUCCESS in 12m 30s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/500ed71f39044231bebe0c0fc6926073 : SUCCESS in 58m 26s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/f41bbfd290384cbeb259b2ded224633d : SUCCESS in 53m 21s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/fa27c3bcbf7544ad94bfc399a6020e8d : SUCCESS in 45m 42s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/c057239698f54f399a64d8104051fcf5 : SUCCESS in 30m 17s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/7b28e6e5b39548a08efe3326e82a5f18 : SUCCESS in 4m 38s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/ccd994a0748642c2bf78f7086e04374b : SUCCESS in 17m 06s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/038cc8f0923b4e69bad538a9fb8dd1f3 : SUCCESS in 1h 04m 28s","accounts_in_message":[],"_revision_number":22},{"id":"2351d31d087aae2bcfa74e86ea405fb3c07e528e","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-24 21:09:36.000000000","message":"Patch Set 22:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/93109f0b22834113a0c2cfbcc9e48f00\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/60bdc0d4488e4e47ba27f49332305313 : SUCCESS in 36m 35s","accounts_in_message":[],"_revision_number":22},{"id":"4465dd504490a773de67700ca2a4561f8c1ede0f","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2026-03-25 16:30:13.000000000","message":"Uploaded patch set 23: Patch Set 22 was rebased.\n\nOutdated Votes:\n* Verified+1\n","accounts_in_message":[],"_revision_number":23},{"id":"12cf813bab9b6c3c74306d3931819a8b74dd5ef6","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-25 17:59:22.000000000","message":"Patch Set 23: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/747532a915524553864c4be9d7a5566d\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/97de07ac05bb4912ba445f45fdd5e44d : SUCCESS in 12m 19s\n- grenade https://zuul.opendev.org/t/openstack/build/60ed445e548a44a998ff14cfa9affbb3 : SUCCESS in 1h 20m 26s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/57778d00b7834069a97ceffed398bd18 : SUCCESS in 58m 38s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/f716ec8cf8704d4d9d5c4a06d1b98cf1 : SUCCESS in 53m 52s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/3d5a58ea77814f01bc426ada2ac28c7b : SUCCESS in 57m 10s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/d64b5ee1545948799cb5cf557ddde612 : SUCCESS in 13m 02s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/3ff78ffab9184af992a99661ad45986c : SUCCESS in 21m 27s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/e3c052554943481681fcf4ad482bac79 : SUCCESS in 21m 43s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/a55467ce49474688b2472a289e084420 : SUCCESS in 6m 34s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/28885054ad4d4d77891ac3fa0e758c72 : SUCCESS in 26m 48s\n- swift-tox-py310 https://zuul.opendev.org/t/openstack/build/de88afc60da94860be783ae7b7609634 : SUCCESS in 24m 22s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/2d60282af32c40d88cbbccd8a96513af : SUCCESS in 13m 13s\n- swift-tox-py314 https://zuul.opendev.org/t/openstack/build/c7311bf0d99b4aa5886216973c1f8f69 : SUCCESS in 11m 02s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/2790ec86ba124f37b6a011445f0f25ad : SUCCESS in 9m 20s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/56af899cc2d34300af2d241041759427 : SUCCESS in 9m 11s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/4f301f6349a34fcaa7e0e01ce8e38832 : SUCCESS in 15m 44s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/3db827c295a3480b8d0a52b8b33fc640 : SUCCESS in 4m 53s\n- swift-tox-func-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/85bc1bce209948f2bcbb541def941721 : SUCCESS in 17m 54s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/2f5988bca3ca40b287215fc373a2b624 : SUCCESS in 13m 20s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/2443660aabc542caba166815e9350cec : SUCCESS in 1h 02m 48s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/e9e489143b1c40029b8d8ed743c69ea9 : SUCCESS in 56m 23s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/11affcf9c6144539becc629131679735 : SUCCESS in 40m 40s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/8c4b0239158f4a98b5212f437d2e875b : SUCCESS in 28m 30s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/e003f04f051b4bed90551fe9a7f9a2d0 : SUCCESS in 4m 29s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/88f6c4760d064c339b82a070aa90d11d : SUCCESS in 28m 01s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/73bf9f8258294ba8a3d705cbb8323a24 : SUCCESS in 33m 02s","accounts_in_message":[],"_revision_number":23},{"id":"965f5171502b91301ea63c3bbb25437bdbf2ead4","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-25 20:34:25.000000000","message":"Patch Set 23:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/bc93195e2b0040399abeb126a68cc2f3\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/d9a560c2ff05464eb780a9c4cad1e9f9 : SUCCESS in 46m 48s","accounts_in_message":[],"_revision_number":23},{"id":"4aca7d18f5db079e0031ce8734c6d5a9d0d8b800","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2026-05-12 01:53:40.000000000","message":"Uploaded patch set 24.\n\nOutdated Votes:\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":24},{"id":"a8f7ad603d4b4ac295da5258e0667d92bff7dda1","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-12 02:27:25.000000000","message":"Patch Set 24:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/b54c8176225e41fca6313f5e01b9ff9a\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/0f462cf4e0924a5d8508e70cfa044f02 : SUCCESS in 30m 55s","accounts_in_message":[],"_revision_number":24},{"id":"2b3d6bbbbc38a6940e64a1c6308e3b6d8b420aff","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-12 03:09:58.000000000","message":"Patch Set 24: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/b336b1b17076437489e274acacfc6cce\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/06237073c651408d9abaea37435b0c2e : SUCCESS in 10m 52s\n- grenade https://zuul.opendev.org/t/openstack/build/1c56e62ec8e742f4b7c55a27d352a5e9 : SUCCESS in 1h 08m 52s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/aa9f1231836241ef92788f0f85e98358 : SUCCESS in 48m 28s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/784dcd19319b40b7b341ce8d0fffe146 : SUCCESS in 1h 08m 37s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/c7a0794c47724f31a8228e2779b50a99 : SUCCESS in 1h 06m 45s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/69439b647bd34c7a8e53acd1ba1b29ae : SUCCESS in 10m 50s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/fff539559a774b01b955fd5d281cb89b : SUCCESS in 27m 23s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/2e62a11cd7814106abfaa2fcf9ae04c6 : SUCCESS in 21m 42s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/69ab56cf45a9493ca52befaa2368de71 : SUCCESS in 8m 36s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/8c28f00555b747c3a0fc12b245f2f579 : SUCCESS in 27m 40s\n- swift-tox-py310 https://zuul.opendev.org/t/openstack/build/9eb29518947a4917be9a2d985b724c0e : SUCCESS in 17m 00s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/058626d1b6814fc28d14fb37eb24813a : SUCCESS in 20m 39s\n- swift-tox-py314 https://zuul.opendev.org/t/openstack/build/dc448aca051a4ddfa3448a496e8e266e : SUCCESS in 9m 28s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/91f516d707284e958f42a154d7081e5a : SUCCESS in 14m 40s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/1a9225ab7a994d0dae5573a34557a159 : SUCCESS in 15m 49s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/2f8cffae5f604630a9169948679ce596 : SUCCESS in 16m 49s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/764bff9986af4920afef63dab8cc071d : SUCCESS in 4m 27s\n- swift-tox-func-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/6adb9ac1d03e498390bcde5918728b59 : SUCCESS in 8m 53s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/ed0302f622e24d6494b14794b7efaa90 : SUCCESS in 10m 14s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/364665cc53614b4f81ae381bb919192d : SUCCESS in 1h 03m 44s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/2f414b00a0634aabb0ee34d37009eca5 : SUCCESS in 51m 41s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/294b9252e8af4509b750e57fb2e26772 : SUCCESS in 55m 15s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/6f0ff3a368f94883bd775b4bdfb8d59f : SUCCESS in 30m 41s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/d766dc400f264b91bd58822013495909 : SUCCESS in 4m 26s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/8c9db7b57bc0469cbdb6cdd645713f20 : SUCCESS in 8m 43s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/898bf66dabf7467bbb3134edccbc8a28 : SUCCESS in 1h 02m 22s","accounts_in_message":[],"_revision_number":24},{"id":"b00ec41c4e50c6b1bd4b962b0fd1f3bc0614764e","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"date":"2026-07-22 23:58:01.000000000","message":"Uploaded patch set 25: Patch Set 24 was rebased. Commit message was updated.\n\nOutdated Votes:\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":25},{"id":"31121bbb5eaffc20ecfe416d51b53399eceef826","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-23 00:58:39.000000000","message":"Patch Set 25:\n\nBuild failed (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/fced81251de84998b0e91386ddc7dd3a\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/09ab92d3fe934aedaa8e283f4590f0d3 : FAILURE in 56m 07s","accounts_in_message":[],"_revision_number":25},{"id":"096ce0ca73b3a9bcb87e6453a1d170f56e58bccb","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-23 01:28:05.000000000","message":"Patch Set 25: 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/7b55087631b3496fb62934c2d0183d95\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/fa44f8ab99f64655b1eff573f06c3156 : SUCCESS in 10m 37s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/c80e7ea1669040b68eab2d91ab628860 : SUCCESS in 6m 28s\n- grenade https://zuul.opendev.org/t/openstack/build/75a16a66cb094e15a7864e621bf5af46 : SUCCESS in 1h 20m 55s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/fb99300a3fb9478ea5fa6ed64115b405 : SUCCESS in 1h 03m 53s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/8fd5385daaf547dda7ec87b015a56782 : SUCCESS in 49m 36s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/ada5d9bafaa1456293c67983f0ae3c02 : SUCCESS in 1h 04m 14s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/8593fce9f78144a68b4f15a61bff94d9 : SUCCESS in 19m 08s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/aba3fda496414f9eabe3b37442c9a1e3 : SUCCESS in 20m 54s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/66761339b9a4439bb0424dabffb85ab5 : SUCCESS in 11m 36s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/aee254e138864a6bad6d2bfc4ad0301d : SUCCESS in 5m 44s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/a5908d044a134eddb617e69b6003d688 : FAILURE in 26m 20s\n- swift-tox-py310 https://zuul.opendev.org/t/openstack/build/d8da016b2add432794cefbffc5c0f4c0 : FAILURE in 10m 04s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/d4f69424ba5146418df23bc051138538 : FAILURE in 20m 20s\n- swift-tox-py314 https://zuul.opendev.org/t/openstack/build/ef39800a657f442181fd7c4dd23ea2c4 : FAILURE in 17m 13s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/f5ac029e897d4a799f39ff4de1a12519 : SUCCESS in 14m 43s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/2fdd98ca4cb140a697ed124cddb94878 : SUCCESS in 17m 05s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/8b2ceb5ec2b04a37b4afbfc2fcd2f55d : SUCCESS in 11m 33s\n- swift-tox-func-py39-centos-9-stream https://zuul.opendev.org/t/openstack/build/9cf8ca5e87054db49c607e0e31cc3c72 : SUCCESS in 9m 43s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/20bae29c961a4753a109c736826f4348 : SUCCESS in 6m 33s\n- swift-tox-func-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/7dbf398a730a4ad081e9cf3205ff195b : FAILURE in 8m 23s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/7e480c33b5ba4dde8314dc22a8ec8db2 : SUCCESS in 8m 32s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/f1183c256635435289dce643dc86f15c : SUCCESS in 53m 23s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/710f308f4e6f4dcdad63c8e13631ad9e : SUCCESS in 34m 34s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/128e8483e93a4abc9b2d2ade1ed5aa7d : SUCCESS in 27m 57s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/5d0ac3e729db46c0b75fb71cceb834c9 : FAILURE in 16m 49s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/43b21f9ece2142d2a79869d4197ca275 : FAILURE in 4m 08s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/0e68ea8aa41e4cb5a939ea75c9dd1e88 : SUCCESS in 20m 31s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/d32113001f7c49d68cfeaaf2a884250f : SUCCESS in 31m 40s\n\nWarning:\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/zuul/zuul-jobs/playbooks/unittests/post.yaml for job swift-tox-func-ec-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml for job swift-tox-func-ec-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml for job swift-tox-func-ec-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml for job swift-tox-func-ec-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/zuul/zuul-jobs/playbooks/unittests/post.yaml for job swift-tox-func-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml for job swift-tox-func-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml for job swift-tox-func-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml for job swift-tox-func-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/zuul/zuul-jobs/playbooks/unittests/post.yaml for job swift-tox-func-encryption-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml for job swift-tox-func-encryption-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml for job swift-tox-func-encryption-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml for job swift-tox-func-encryption-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  Comments left for invalid file test/unit/obj/test_server.py","accounts_in_message":[],"_revision_number":25},{"id":"588175b57113f4eb57238a52ca968b718e61fc10","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2026-07-23 06:56:01.000000000","message":"Uploaded patch set 26.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":26},{"id":"69ee320bc4bba4dd6566caf239d45151ec866860","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-23 08:04:45.000000000","message":"Patch Set 26: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/50594de550bb47b5ae410cc314f8bfa4\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/2414683fccba40ffbc623582012e57e7 : SUCCESS in 5m 15s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/7714bc6977654c2dbf48079d8c2e9e34 : SUCCESS in 5m 04s\n- grenade https://zuul.opendev.org/t/openstack/build/dfb54430fd3745338e07bb3c1c6509d6 : SUCCESS in 1h 01m 20s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/52769ed31a0940abb798edcbb867c942 : SUCCESS in 1h 00m 36s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/7bd2ea8a55a641b695c66d3c3a4e4c59 : SUCCESS in 52m 07s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/44ba731749094697af704a1d93764ba5 : SUCCESS in 54m 44s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/7bc6b21bff284ad7b3c657a6fa49f431 : SUCCESS in 19m 14s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/9f8201b48487469196d22b87d2baa69d : SUCCESS in 10m 40s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/b47d4363b724426890d76e562d171f97 : SUCCESS in 12m 10s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/5dbf4cea33e5469fa73ee0ff8ff0dab7 : SUCCESS in 6m 54s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/8b58c8c783ad44268243e4cd4b1e21b3 : SUCCESS in 25m 23s\n- swift-tox-py310 https://zuul.opendev.org/t/openstack/build/9457967ae1ef4d2eae116c29fbbf7a88 : SUCCESS in 16m 50s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/4dd56b4817184a818aa1077aee214946 : SUCCESS in 12m 38s\n- swift-tox-py314 https://zuul.opendev.org/t/openstack/build/e747f2dab0b94748baec4766d0800565 : SUCCESS in 11m 19s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/09e31125ee3c4ca2a6539edab5c78b5e : SUCCESS in 8m 09s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/e683d9edd28344788ceed94e2402c657 : SUCCESS in 8m 24s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/8c124da86257456abbe7694d639f0bca : SUCCESS in 9m 36s\n- swift-tox-func-py39-centos-9-stream https://zuul.opendev.org/t/openstack/build/fa73733535cf47f8af2c6c7474392b96 : SUCCESS in 17m 36s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/0251e5aa6993428b9596d9a6492dac29 : SUCCESS in 3m 39s\n- swift-tox-func-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/fcae704dda7f434eb0386059a7965820 : FAILURE in 7m 22s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/522ab94a5c2d41ca8f2f69c604104075 : SUCCESS in 6m 13s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/6f8505b5e292413cbe803951be472594 : SUCCESS in 37m 25s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/b75f88fb5ba3443892986ef2961b1f53 : SUCCESS in 26m 40s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/e37230ca96d44456b3de2b8e173bf919 : SUCCESS in 49m 17s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/cd4f608d33d44bf6bd1fdade83c6d5b5 : SUCCESS in 27m 43s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/6590a9cccde549e991ae719bd9999533 : SUCCESS in 4m 34s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/c7c9818899d4483e8ccc5a9f031c7401 : SUCCESS in 11m 02s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/5f60d3d9d865477f8ed8aea829ea16db : SUCCESS in 1h 01m 52s\n\nWarning:\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/zuul/zuul-jobs/playbooks/unittests/post.yaml for job swift-tox-func-encryption-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml for job swift-tox-func-encryption-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml for job swift-tox-func-encryption-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml for job swift-tox-func-encryption-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/zuul/zuul-jobs/playbooks/unittests/post.yaml for job swift-tox-func-ec-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml for job swift-tox-func-ec-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml for job swift-tox-func-ec-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml for job swift-tox-func-ec-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/zuul/zuul-jobs/playbooks/unittests/post.yaml for job swift-tox-func-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml for job swift-tox-func-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml for job swift-tox-func-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml for job swift-tox-func-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.","accounts_in_message":[],"_revision_number":26},{"id":"f70457c31f3a689ac58e8c9b8ad3d5a07f6cc23c","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-23 08:04:46.000000000","message":"Patch Set 26:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/e6e2cdd78ada463588c14f8415bc7279\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/4a53a16640af463ea89caa8fd716f45d : SUCCESS in 59m 05s","accounts_in_message":[],"_revision_number":26},{"id":"e0f0a4481fac7375fc62574bdbd33c5301a60d67","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2026-07-23 10:27:09.000000000","message":"Uploaded patch set 27.\n\nOutdated Votes:\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":27},{"id":"bb951dbfaacef38ef280d16c9e9bf46ac136f633","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-23 11:47:27.000000000","message":"Patch Set 27: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/08c87dade6f84cf2b0031b486bff0b38\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/0fdbfaf2bf02444aae57aa0081f8d1fc : SUCCESS in 10m 46s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/63585fb5fe314ec79fc75548dd857332 : SUCCESS in 8m 39s\n- grenade https://zuul.opendev.org/t/openstack/build/17e1f8173463477dbd388a5de9b886f4 : SUCCESS in 57m 11s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/0990bc3bc46c4661889e8fc673a072d8 : SUCCESS in 1h 00m 27s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/f1cd28ec7d3d490daf565be4d64e708a : SUCCESS in 38m 39s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/7dee4dee230d427caa86e1ab79fec393 : SUCCESS in 58m 36s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/06f15627ca7941adb9b079ce223db773 : SUCCESS in 18m 49s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/d8e85476dc974cfb98fb0b9e9edb7759 : SUCCESS in 16m 50s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/63179b40e7a944559164796c1985d53b : SUCCESS in 21m 14s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/b954156fcd6d483b9d0e4dfe7630dd28 : SUCCESS in 6m 31s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/bdb9e81193fb4c3a9c4dd1cc2f57526e : SUCCESS in 26m 31s\n- swift-tox-py310 https://zuul.opendev.org/t/openstack/build/0ff646dadad14e5aac308e164be791d4 : SUCCESS in 23m 54s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/34f39c5b59074bb0930a86e935332f09 : SUCCESS in 22m 13s\n- swift-tox-py314 https://zuul.opendev.org/t/openstack/build/d6f4a65dfc764d11babc42229142189b : SUCCESS in 23m 09s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/f09b49992cea45da8ee7a07cb633ceca : SUCCESS in 14m 51s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/5d408e7caca740f0a1666d4e41c6627d : SUCCESS in 15m 43s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/30a317d0c40d428e8ed4b02ee46429f9 : SUCCESS in 15m 05s\n- swift-tox-func-py39-centos-9-stream https://zuul.opendev.org/t/openstack/build/24537d6eac124c45984e000d4d3a683e : SUCCESS in 16m 54s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/88b49493bd9c4d368a108b15e8db0652 : SUCCESS in 6m 25s\n- swift-tox-func-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/e72358410865470c91c92571f44030b5 : FAILURE in 7m 42s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/7dd4f06afd84410aa13709bdbfdc4afe : SUCCESS in 8m 56s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/0012ae7d0ac14a999d197cda29673a9f : SUCCESS in 56m 59s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/5c1996b0159b4a55bed9b3601a6d79e5 : SUCCESS in 50m 04s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/0205f9320626430d9fff2918c11eb25c : SUCCESS in 52m 58s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/ab6f264b447a4187b1e521bfa82ef6a3 : SUCCESS in 29m 03s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/7ffab2f8e3fd44a8a4843f9d1c320595 : SUCCESS in 4m 28s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/ced371c0eb8a4845b787b04ea40552c8 : SUCCESS in 20m 01s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/32c29312b61848248b2f97f4536cb2f4 : SUCCESS in 54m 40s\n\nWarning:\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/zuul/zuul-jobs/playbooks/unittests/post.yaml for job swift-tox-func-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml for job swift-tox-func-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml for job swift-tox-func-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml for job swift-tox-func-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/zuul/zuul-jobs/playbooks/unittests/post.yaml for job swift-tox-func-encryption-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml for job swift-tox-func-encryption-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml for job swift-tox-func-encryption-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml for job swift-tox-func-encryption-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/zuul/zuul-jobs/playbooks/unittests/post.yaml for job swift-tox-func-ec-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post.yaml for job swift-tox-func-ec-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/cleanup.yaml for job swift-tox-func-ec-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.\n  File .ssh/known_hosts.old found in build home directory during playbook opendev.org/opendev/base-jobs/playbooks/base/post-logs.yaml for job swift-tox-func-ec-py39-centos-9-stream-fips.  Add to preserve-home-paths if safe, or otherwise remove.","accounts_in_message":[],"_revision_number":27},{"id":"c5fcefeb778c478c6f12cc5d04e9984104f91154","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-07-23 11:48:01.000000000","message":"Patch Set 27:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/61fa4ab8b4e242bcb619d37017d995ef\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/64ea64cd80f94709aef0cdcb89a4f8e8 : SUCCESS in 1h 06m 29s","accounts_in_message":[],"_revision_number":27},{"id":"cb5853e734d9f1b2e23084cb968d5c236ff3bc00","author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@nvidia.com","username":"cschwede"},"date":"2026-07-23 13:42:10.000000000","message":"Patch Set 27: Code-Review-1\n\n(3 comments)","accounts_in_message":[],"_revision_number":27},{"id":"ef6e681a7fa70f1c0c25578f3e3dbf435f44f13c","author":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"},"date":"2026-07-23 15:03:23.000000000","message":"Patch Set 27: Code-Review-1\n\n(6 comments)","accounts_in_message":[],"_revision_number":27},{"id":"a32014ac4ee32f249dc6d38f20ccb34f21f92fee","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2026-07-23 15:24:23.000000000","message":"Patch Set 27:\n\n(1 comment)","accounts_in_message":[],"_revision_number":27}],"current_revision_number":27,"current_revision":"f9b1ce1dc7a22fcc4b9384c221f4fb284f41eac4","revisions":{"01e44cc52b890646f45f7172943c30d3171b1f2f":{"kind":"REWORK","_number":1,"created":"2024-04-24 05:33:11.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/61/916861/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/61/916861/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/61/916861/1"}}},"commit":{"parents":[{"commit":"5ba1fbf86b961915b09f89ef4a2a437cf8d4df5c","subject":"Merge \"proxy_logging: unit test first-byte.timing metrics\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/5ba1fbf86b961915b09f89ef4a2a437cf8d4df5c"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-04-24 05:16:15.000000000","tz":600},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-04-24 05:32:48.000000000","tz":600},"subject":"db_auditor: add vacuum support","message":"db_auditor: add vacuum support\n\nAs an SQLite database rows are deleted the file can become more sparse and\nfragmented. When this happens the DB needs to be vacuumed.\nA good indicator of sparsness in the file is the freelist page count.\nWhich is the number of pages that have been freed up (but not used).\nThe higher this number, the more sparse the file is getting. We can\nmontior this number while the db_auditor visits DBs and when it gets high\nenough we can trigger a vacuum.\n\nThis patch adds a new option `freelist_vacuum_count` to the db_auditors.\nIf set to 0 (default) no checking or vacuuming in enabled. When set to a\npositive integer, once the `freelist page count` in a DB gets higher\nthen this number it\u0027ll trigger a vacuum of the database.\n\nIn testing on a large root container downstream, a 500+MB sparse DB had:\n\n  $ sqlite3 \u003clarge_root_db\u003e.db \".dbinfo\"\n  ..\n  freelist page count: 569463\n\nOnce vacumed it only took up 13MB and a freelist page count of 0.\nFrom python we can get this freelist page count by:\n\n  cur \u003d conn.execute(\"PRAGMA freelist_count\")\n  cur.fetchone()\n  \u003e\u003e (569463,)\n\nIf/when we want this enabled by default we can think about a good\ndefault value. Maybe 1000 free pages seems reasonable?\n\nThe patch also adds `vacuum.success` and `vacuum.failure` increment\nmetrics, so we can track how many DBs get vacuumed.\nThe advantages of having the auditor do the vacuum are:\n\n - busy containers can get defragged and hopefully run more efficiently.\n - vacuumed containers means less data over the network during rebases.\n - We can tune to only vacuum when we want (over some threshold).\n - The extra io happens in the eventual consistancy engine and by the\n   auditor, which probably makes more sense.\n\nCloses-Bug: #1691648\nChange-Id: Ic731f0d93b3054149db16ffd080683100ad377fd\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/01e44cc52b890646f45f7172943c30d3171b1f2f"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/01e44cc52b890646f45f7172943c30d3171b1f2f"}]},"branch":"refs/heads/master"},"df6656251c82603695f498d76ba1b4fc9e5f2bb9":{"kind":"REWORK","_number":2,"created":"2024-04-26 06:52:36.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/61/916861/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/61/916861/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/61/916861/2"}}},"commit":{"parents":[{"commit":"5ba1fbf86b961915b09f89ef4a2a437cf8d4df5c","subject":"Merge \"proxy_logging: unit test first-byte.timing metrics\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/5ba1fbf86b961915b09f89ef4a2a437cf8d4df5c"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-04-24 05:16:15.000000000","tz":600},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-04-26 06:51:06.000000000","tz":600},"subject":"db_auditor: add vacuum support","message":"db_auditor: add vacuum support\n\nAs an SQLite database rows are deleted the file can become more sparse and\nfragmented. When this happens the DB needs to be vacuumed.\nA good indicator of sparsness in the file is the freelist page count.\nWhich is the number of pages that have been freed up (but not used).\nThe higher this number, the more sparse the file is getting. We can\nmontior this number while the db_auditor visits DBs and when it gets high\nenough we can trigger a vacuum.\n\nThis patch adds a new option `freelist_vacuum_count` to the db_auditors.\nIf set to 0 (default) no checking or vacuuming in enabled. When set to a\npositive integer, once the `freelist page count` in a DB gets higher\nthen this number it\u0027ll trigger a vacuum of the database.\n\nIn testing on a large root container downstream, a 500+MB sparse DB had:\n\n  $ sqlite3 \u003clarge_root_db\u003e.db \".dbinfo\"\n  ..\n  freelist page count: 569463\n\nOnce vacumed it only took up 13MB and a freelist page count of 0.\nFrom python we can get this freelist page count by:\n\n  cur \u003d conn.execute(\"PRAGMA freelist_count\")\n  cur.fetchone()\n  \u003e\u003e (569463,)\n\nIf/when we want this enabled by default we can think about a good\ndefault value. Maybe 1000 free pages seems reasonable?\n\nJust added the ability to also grab the freelist percent (of the pages)\nand freelist space used. These might be more userfriendly to\nconfiguration.\n\nThe patch also adds `vacuum.success` and `vacuum.failure` increment\nmetrics, so we can track how many DBs get vacuumed.\nThe advantages of having the auditor do the vacuum are:\n\n - busy containers can get defragged and hopefully run more efficiently.\n - vacuumed containers means less data over the network during rebases.\n - We can tune to only vacuum when we want (over some threshold).\n - The extra io happens in the eventual consistancy engine and by the\n   auditor, which probably makes more sense.\n\nCloses-Bug: #1691648\nChange-Id: Ic731f0d93b3054149db16ffd080683100ad377fd\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/df6656251c82603695f498d76ba1b4fc9e5f2bb9"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/df6656251c82603695f498d76ba1b4fc9e5f2bb9"}]},"branch":"refs/heads/master"},"3d48a03a22b48e1d830e83ea08beb6679ee1b546":{"kind":"REWORK","_number":3,"created":"2024-04-29 07:16:33.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/61/916861/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/61/916861/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/61/916861/3"}}},"commit":{"parents":[{"commit":"5ba1fbf86b961915b09f89ef4a2a437cf8d4df5c","subject":"Merge \"proxy_logging: unit test first-byte.timing metrics\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/5ba1fbf86b961915b09f89ef4a2a437cf8d4df5c"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-04-24 05:16:15.000000000","tz":600},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-04-29 07:16:09.000000000","tz":600},"subject":"db_auditor: add vacuum support","message":"db_auditor: add vacuum support\n\nAs an SQLite database rows are deleted the file can become more sparse and\nfragmented. When this happens the DB needs to be vacuumed.\nA good indicator of sparsness in the file is the freelist page count.\nWhich is the number of pages that have been freed up (but not used).\nThe higher this number, the more sparse the file is getting. We can\nmontior this number while the db_auditor visits DBs and when it gets high\nenough we can trigger a vacuum.\n\nThis patch adds a new option `freelist_vacuum_count` to the db_auditors.\nIf set to 0 (default) no checking or vacuuming in enabled. When set to a\npositive integer, once the `freelist page count` in a DB gets higher\nthen this number it\u0027ll trigger a vacuum of the database.\n\nIn testing on a large root container downstream, a 500+MB sparse DB had:\n\n  $ sqlite3 \u003clarge_root_db\u003e.db \".dbinfo\"\n  ..\n  freelist page count: 569463\n\nOnce vacumed it only took up 13MB and a freelist page count of 0.\nFrom python we can get this freelist page count by:\n\n  cur \u003d conn.execute(\"PRAGMA freelist_count\")\n  cur.fetchone()\n  \u003e\u003e (569463,)\n\nIf/when we want this enabled by default we can think about a good\ndefault value. Maybe 1000 free pages seems reasonable?\n\nJust added the ability to also grab the freelist percent (of the pages)\nand freelist space used. These might be more userfriendly to\nconfiguration.\n\nThe patch also adds `vacuum.success` and `vacuum.failure` increment\nmetrics, so we can track how many DBs get vacuumed.\nThe advantages of having the auditor do the vacuum are:\n\n - busy containers can get defragged and hopefully run more efficiently.\n - vacuumed containers means less data over the network during rebases.\n - We can tune to only vacuum when we want (over some threshold).\n - The extra io happens in the eventual consistancy engine and by the\n   auditor, which probably makes more sense.\n\nCloses-Bug: #1691648\nChange-Id: Ic731f0d93b3054149db16ffd080683100ad377fd\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/3d48a03a22b48e1d830e83ea08beb6679ee1b546"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/3d48a03a22b48e1d830e83ea08beb6679ee1b546"}]},"branch":"refs/heads/master"},"c7999f8fa9ba0e93be8feb92c57a6d274666b132":{"kind":"REWORK","_number":4,"created":"2024-04-30 07:12:46.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/61/916861/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/61/916861/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/61/916861/4"}}},"commit":{"parents":[{"commit":"5ba1fbf86b961915b09f89ef4a2a437cf8d4df5c","subject":"Merge \"proxy_logging: unit test first-byte.timing metrics\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/5ba1fbf86b961915b09f89ef4a2a437cf8d4df5c"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-04-24 05:16:15.000000000","tz":600},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-04-30 07:07:08.000000000","tz":600},"subject":"db_auditor: add vacuum support","message":"db_auditor: add vacuum support\n\nAs an SQLite database rows are deleted the file can become more sparse and\nfragmented. When this happens the DB needs to be vacuumed.\nA good indicator of sparsness in the file is the freelist page count.\nWhich is the number of pages that have been freed up (but not used).\nThe higher this number, the more sparse the file is getting. We can\nmontior this number while the db_auditor visits DBs and when it gets high\nenough we can trigger a vacuum.\n\nThis patch adds a new option `freelist_vacuum_count` to the db_auditors.\nIf set to 0 (default) no checking or vacuuming in enabled. When set to a\npositive integer, once the `freelist page count` in a DB gets higher\nthen this number it\u0027ll trigger a vacuum of the database.\n\nIn testing on a large root container downstream, a 500+MB sparse DB had:\n\n  $ sqlite3 \u003clarge_root_db\u003e.db \".dbinfo\"\n  ..\n  freelist page count: 569463\n\nOnce vacumed it only took up 13MB and a freelist page count of 0.\nFrom python we can get this freelist page count by:\n\n  cur \u003d conn.execute(\"PRAGMA freelist_count\")\n  cur.fetchone()\n  \u003e\u003e (569463,)\n\nWe can also use PRAGMA\u0027s to get the page_size and total page count,\nusing these we calculate the freepage size (in bytes) and ratio with\nused pages (free page percentage). This allows up to add 2 new\ndb_replicator options:\n\n  - vacuum_threshold_size: The size (in bytes) the freepages need to\n        take up before a vacuum is performed.\n  - vacuum_threshold_percent: The percent of freepages before a vacuum\n        is performed.\n\nThe patch also adds `vacuum.success` and `vacuum.failure` increment\nmetrics, so we can track how many DBs get vacuumed.\nThe advantages of having the auditor do the vacuum are:\n\n - busy containers can get defragged and hopefully run more efficiently.\n - vacuumed containers means less data over the network during rebases.\n - We can tune to only vacuum when we want (over some threshold).\n - The extra io happens in the eventual consistancy engine and by the\n   auditor, which probably makes more sense.\n\nCloses-Bug: #1691648\nChange-Id: Ic731f0d93b3054149db16ffd080683100ad377fd\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/c7999f8fa9ba0e93be8feb92c57a6d274666b132"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/c7999f8fa9ba0e93be8feb92c57a6d274666b132"}]},"branch":"refs/heads/master"},"86664263f19bc946f237caae02db0783dc9da072":{"kind":"REWORK","_number":5,"created":"2024-05-02 06:07:36.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/61/916861/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/61/916861/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/61/916861/5"}}},"commit":{"parents":[{"commit":"5ba1fbf86b961915b09f89ef4a2a437cf8d4df5c","subject":"Merge \"proxy_logging: unit test first-byte.timing metrics\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/5ba1fbf86b961915b09f89ef4a2a437cf8d4df5c"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-04-24 05:16:15.000000000","tz":600},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-05-02 05:35:51.000000000","tz":600},"subject":"db_auditor: add vacuum support","message":"db_auditor: add vacuum support\n\nAs an SQLite database rows are deleted the file can become more sparse and\nfragmented. When this happens the DB needs to be vacuumed.\nA good indicator of sparsness in the file is the freelist page count.\nWhich is the number of pages that have been freed up (but not used).\nThe higher this number, the more sparse the file is getting. We can\nmontior this number while the db_auditor visits DBs and when it gets high\nenough we can trigger a vacuum.\n\nIn testing on a large root container downstream, a 500+MB sparse DB had:\n\n  $ sqlite3 \u003clarge_root_db\u003e.db \".dbinfo\"\n  ..\n  freelist page count: 569463\n\nOnce vacumed it only took up 13MB and a freelist page count of 0.\nFrom python we can get this freelist page count by:\n\n  cur \u003d conn.execute(\"PRAGMA freelist_count\")\n  cur.fetchone()\n  \u003e\u003e (569463,)\n\nWe can also use PRAGMA\u0027s to get the page_size and total page count,\nusing these we calculate the freepage size (in bytes) and ratio with\nused pages (free page percentage). This allows up to add 2 new\ndb_replicator options:\n\n  - vacuum_threshold_size: The size (in bytes) the freepages need to\n        take up before a vacuum is performed.\n  - vacuum_threshold_percent: The percent of freepages before a vacuum\n        is performed.\n\nThe patch also adds a few more increment metrics, firstly `vacuum.success`\nand `vacuum.failure` so we can track how many DBs get vacuumed.\n\nBut also some metrics that fire off for _every_ db to help us track the\nbloatiness of DBs in the cluster:\n\n    \u003cserver-type\u003e.freelist.percent.\u003cbucket\u003e\n    \u003cserver-type\u003e.freelist.size.\u003cbucket\u003eMB\n\nFor example:\n\n    container.freelist.percent.70-80\n    account.freelist.size.50-55MB\n\nThis first is an incremented if the container DB\u0027s freelist page percent\nis between 70% and 80%. The second is an account whose freelist page\nsize is between 50MB and 55MB.\n\nThese should give us a basic gauge of the bloatiness of the metadata\nlayer in swift.\n\nThe advantages of having the auditor do the vacuum are:\n\n - busy containers can get defragged and hopefully run more efficiently.\n - vacuumed containers means less data over the network during rebases.\n - We can tune to only vacuum when we want (over some threshold).\n - The extra io happens in the eventual consistancy engine and by the\n   auditor, which probably makes more sense.\n\nCloses-Bug: #1691648\nChange-Id: Ic731f0d93b3054149db16ffd080683100ad377fd\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/86664263f19bc946f237caae02db0783dc9da072"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/86664263f19bc946f237caae02db0783dc9da072"}]},"branch":"refs/heads/master"},"341ca6dec861435a9c0ab17ec9250bc596f6978c":{"kind":"REWORK","_number":6,"created":"2024-06-04 03:47:48.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/61/916861/6","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/61/916861/6","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/61/916861/6"}}},"commit":{"parents":[{"commit":"5ba1fbf86b961915b09f89ef4a2a437cf8d4df5c","subject":"Merge \"proxy_logging: unit test first-byte.timing metrics\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/5ba1fbf86b961915b09f89ef4a2a437cf8d4df5c"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-04-24 05:16:15.000000000","tz":600},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-06-04 03:47:02.000000000","tz":600},"subject":"db_auditor: add vacuum support","message":"db_auditor: add vacuum support\n\nAs an SQLite database rows are deleted the file can become more sparse and\nfragmented. When this happens the DB needs to be vacuumed.\nA good indicator of sparsness in the file is the freelist page count.\nWhich is the number of pages that have been freed up (but not used).\nThe higher this number, the more sparse the file is getting. We can\nmontior this number while the db_auditor visits DBs and when it gets high\nenough we can trigger a vacuum.\n\nIn testing on a large root container downstream, a 500+MB sparse DB had:\n\n  $ sqlite3 \u003clarge_root_db\u003e.db \".dbinfo\"\n  ..\n  freelist page count: 569463\n\nOnce vacumed it only took up 13MB and a freelist page count of 0.\nFrom python we can get this freelist page count by:\n\n  cur \u003d conn.execute(\"PRAGMA freelist_count\")\n  cur.fetchone()\n  \u003e\u003e (569463,)\n\nWe can also use PRAGMA\u0027s to get the page_size and total page count,\nusing these we calculate the freepage size (in bytes) and ratio with\nused pages (free page percentage). This allows up to add 2 new\ndb_replicator options:\n\n  - vacuum_threshold_size: The size (in bytes) the freepages need to\n        take up before a vacuum is performed.\n  - vacuum_threshold_percent: The percent of freepages before a vacuum\n        is performed.\n\nThe patch also adds a few more increment metrics, firstly `vacuum.success`\nand `vacuum.failure` so we can track how many DBs get vacuumed.\n\nBut also some metrics that fire off for _every_ db, whether the\nthreshold settings are enabled for not, to help us track the\nbloatiness of DBs in the cluster and help ops determine starting\nthresholds:\n\n    \u003cserver-type\u003e.freelist.percent.\u003cbucket\u003e\n    \u003cserver-type\u003e.freelist.size.\u003cbucket\u003eMB\n\nFor example:\n\n    container.freelist.percent.70-79\n    account.freelist.size.50-54MB\n\nThis first is an incremented if the container DB\u0027s freelist page percent\nis between 70% and 80%. The second is an account whose freelist page\nsize is between 50MB and 55MB.\n\nThese should give us a basic gauge of the bloatiness of the metadata\nlayer in swift.\n\nThe advantages of having the auditor do the vacuum are:\n\n - busy containers can get defragged and hopefully run more efficiently.\n - vacuumed containers means less data over the network during rebases.\n - We can tune to only vacuum when we want (over some threshold).\n - The extra io happens in the eventual consistancy engine and by the\n   auditor, which probably makes more sense.\n\nCloses-Bug: #1691648\nChange-Id: Ic731f0d93b3054149db16ffd080683100ad377fd\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/341ca6dec861435a9c0ab17ec9250bc596f6978c"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/341ca6dec861435a9c0ab17ec9250bc596f6978c"}]},"branch":"refs/heads/master"},"4d9c4724e245249270a2b7dd3876485112a17fb5":{"kind":"REWORK","_number":7,"created":"2024-06-04 06:51:25.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/61/916861/7","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/61/916861/7","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/7 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/7 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/7 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/61/916861/7"}}},"commit":{"parents":[{"commit":"876242ece5a9c3a148a23fe4fd10a8bdc4ba07a4","subject":"Split reserve functionality from C calls in fallocate","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/876242ece5a9c3a148a23fe4fd10a8bdc4ba07a4"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-04-24 05:16:15.000000000","tz":600},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-06-04 06:50:59.000000000","tz":600},"subject":"db_auditor: add vacuum support","message":"db_auditor: add vacuum support\n\nAs an SQLite database rows are deleted the file can become more sparse and\nfragmented. When this happens the DB needs to be vacuumed.\nA good indicator of sparsness in the file is the freelist page count.\nWhich is the number of pages that have been freed up (but not used).\nThe higher this number, the more sparse the file is getting. We can\nmontior this number while the db_auditor visits DBs and when it gets high\nenough we can trigger a vacuum.\n\nIn testing on a large root container downstream, a 500+MB sparse DB had:\n\n  $ sqlite3 \u003clarge_root_db\u003e.db \".dbinfo\"\n  ..\n  freelist page count: 569463\n\nOnce vacumed it only took up 13MB and a freelist page count of 0.\nFrom python we can get this freelist page count by:\n\n  cur \u003d conn.execute(\"PRAGMA freelist_count\")\n  cur.fetchone()\n  \u003e\u003e (569463,)\n\nWe can also use PRAGMA\u0027s to get the page_size and total page count,\nusing these we calculate the freepage size (in bytes) and ratio with\nused pages (free page percentage). This allows up to add 2 new\ndb_replicator options:\n\n  - vacuum_threshold_size: The size (in bytes) the freepages need to\n        take up before a vacuum is performed.\n  - vacuum_threshold_percent: The percent of freepages before a vacuum\n        is performed.\n\nThe patch also adds a few more increment metrics, firstly `vacuum.success`\nand `vacuum.failure` so we can track how many DBs get vacuumed.\n\nBut also some metrics that fire off for _every_ db, whether the\nthreshold settings are enabled for not, to help us track the\nbloatiness of DBs in the cluster and help ops determine starting\nthresholds:\n\n    \u003cserver-type\u003e.freelist.percent.\u003cbucket\u003e\n    \u003cserver-type\u003e.freelist.size.\u003cbucket\u003eMB\n\nFor example:\n\n    container.freelist.percent.70-79\n    account.freelist.size.50-54MB\n\nThis first is an incremented if the container DB\u0027s freelist page percent\nis between 70% and 80%. The second is an account whose freelist page\nsize is between 50MB and 55MB.\n\nThese should give us a basic gauge of the bloatiness of the metadata\nlayer in swift.\n\nThe advantages of having the auditor do the vacuum are:\n\n - busy containers can get defragged and hopefully run more efficiently.\n - vacuumed containers means less data over the network during rebases.\n - We can tune to only vacuum when we want (over some threshold).\n - The extra io happens in the eventual consistancy engine and by the\n   auditor, which probably makes more sense.\n\nCloses-Bug: #1691648\nChange-Id: Ic731f0d93b3054149db16ffd080683100ad377fd\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/4d9c4724e245249270a2b7dd3876485112a17fb5"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/4d9c4724e245249270a2b7dd3876485112a17fb5"}]},"branch":"refs/heads/master"},"f29311edda34d4cd27c065f653dc9ace60b04e11":{"kind":"REWORK","_number":8,"created":"2024-07-22 16:40:50.000000000","uploader":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"ref":"refs/changes/61/916861/8","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/61/916861/8","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/8 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/8 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/8 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/61/916861/8"}}},"commit":{"parents":[{"commit":"e984de864dd0895f4bde81bed56691c48e7cea52","subject":"trivial: assert non_negative_int treats float as valid","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/e984de864dd0895f4bde81bed56691c48e7cea52"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-04-24 05:16:15.000000000","tz":600},"committer":{"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","date":"2024-07-22 16:40:39.000000000","tz":-300},"subject":"db_auditor: add vacuum support","message":"db_auditor: add vacuum support\n\nAs an SQLite database rows are deleted the file can become more sparse and\nfragmented. When this happens the DB needs to be vacuumed.\nA good indicator of sparsness in the file is the freelist page count.\nWhich is the number of pages that have been freed up (but not used).\nThe higher this number, the more sparse the file is getting. We can\nmontior this number while the db_auditor visits DBs and when it gets high\nenough we can trigger a vacuum.\n\nIn testing on a large root container downstream, a 500+MB sparse DB had:\n\n  $ sqlite3 \u003clarge_root_db\u003e.db \".dbinfo\"\n  ..\n  freelist page count: 569463\n\nOnce vacumed it only took up 13MB and a freelist page count of 0.\nFrom python we can get this freelist page count by:\n\n  cur \u003d conn.execute(\"PRAGMA freelist_count\")\n  cur.fetchone()\n  \u003e\u003e (569463,)\n\nWe can also use PRAGMA\u0027s to get the page_size and total page count,\nusing these we calculate the freepage size (in bytes) and ratio with\nused pages (free page percentage). This allows up to add 2 new\ndb_replicator options:\n\n  - vacuum_threshold_size: The size (in bytes) the freepages need to\n        take up before a vacuum is performed.\n  - vacuum_threshold_percent: The percent of freepages before a vacuum\n        is performed.\n\nThe patch also adds a few more increment metrics, firstly `vacuum.success`\nand `vacuum.failure` so we can track how many DBs get vacuumed.\n\nBut also some metrics that fire off for _every_ db, whether the\nthreshold settings are enabled for not, to help us track the\nbloatiness of DBs in the cluster and help ops determine starting\nthresholds:\n\n    \u003cserver-type\u003e.freelist.percent.\u003cbucket\u003e\n    \u003cserver-type\u003e.freelist.size.\u003cbucket\u003eMB\n\nFor example:\n\n    container.freelist.percent.70-79\n    account.freelist.size.50-54MB\n\nThis first is an incremented if the container DB\u0027s freelist page percent\nis between 70% and 80%. The second is an account whose freelist page\nsize is between 50MB and 55MB.\n\nThese should give us a basic gauge of the bloatiness of the metadata\nlayer in swift.\n\nThe advantages of having the auditor do the vacuum are:\n\n - busy containers can get defragged and hopefully run more efficiently.\n - vacuumed containers means less data over the network during rebases.\n - We can tune to only vacuum when we want (over some threshold).\n - The extra io happens in the eventual consistancy engine and by the\n   auditor, which probably makes more sense.\n\nCloses-Bug: #1691648\nChange-Id: Ic731f0d93b3054149db16ffd080683100ad377fd\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/f29311edda34d4cd27c065f653dc9ace60b04e11"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/f29311edda34d4cd27c065f653dc9ace60b04e11"}]},"branch":"refs/heads/master"},"2ed0e48b21c5cb5115d981b50d9a3608d742e6fa":{"kind":"REWORK","_number":9,"created":"2024-08-02 07:49:31.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/61/916861/9","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/61/916861/9","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/9 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/9 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/9 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/61/916861/9"}}},"commit":{"parents":[{"commit":"e984de864dd0895f4bde81bed56691c48e7cea52","subject":"trivial: assert non_negative_int treats float as valid","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/e984de864dd0895f4bde81bed56691c48e7cea52"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-04-24 05:16:15.000000000","tz":600},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-08-02 07:48:17.000000000","tz":600},"subject":"db_auditor: add vacuum support","message":"db_auditor: add vacuum support\n\nAs an SQLite database rows are deleted the file can become more sparse and\nfragmented. When this happens the DB needs to be vacuumed.\nA good indicator of sparsness in the file is the freelist page count.\nWhich is the number of pages that have been freed up (but not used).\nThe higher this number, the more sparse the file is getting. We can\nmontior this number while the db_auditor visits DBs and when it gets high\nenough we can trigger a vacuum.\n\nIn testing on a large root container downstream, a 500+MB sparse DB had:\n\n  $ sqlite3 \u003clarge_root_db\u003e.db \".dbinfo\"\n  ..\n  freelist page count: 569463\n\nOnce vacumed it only took up 13MB and a freelist page count of 0.\nFrom python we can get this freelist page count by:\n\n  cur \u003d conn.execute(\"PRAGMA freelist_count\")\n  cur.fetchone()\n  \u003e\u003e (569463,)\n\nWe can also use PRAGMA\u0027s to get the page_size and total page count,\nusing these we calculate the freepage size (in bytes) and ratio with\nused pages (free page percentage). This allows up to add 2 new\ndb_replicator options:\n\n  - vacuum_threshold_size: The size (in bytes) the freepages need to\n        take up before a vacuum is performed.\n  - vacuum_threshold_percent: The percent of freepages before a vacuum\n        is performed.\n\nThe patch also adds a few more increment metrics, firstly `vacuum.success`\nand `vacuum.failure` so we can track how many DBs get vacuumed.\n\nBut also some metrics that fire off for _every_ db, whether the\nthreshold settings are enabled for not, to help us track the\nbloatiness of DBs in the cluster and help ops determine starting\nthresholds:\n\n    \u003cserver-type\u003e.freelist.percent.\u003cbucket\u003e\n    \u003cserver-type\u003e.freelist.size.\u003cbucket\u003eMB\n\nFor example:\n\n    container.freelist.percent.70-79\n    account.freelist.size.128-255MB\n\nThis first is an incremented if the container DB\u0027s freelist page percent\nis between 70% and 80%. The second is an account whose freelist page\nsize is between 128MB and 255MB.\n\nThese should give us a basic gauge of the bloatiness of the metadata\nlayer in swift.\n\nThe advantages of having the auditor do the vacuum are:\n\n - busy containers can get defragged and hopefully run more efficiently.\n - vacuumed containers means less data over the network during rebases.\n - We can tune to only vacuum when we want (over some threshold).\n - The extra io happens in the eventual consistancy engine and by the\n   auditor, which probably makes more sense.\n\nCloses-Bug: #1691648\nChange-Id: Ic731f0d93b3054149db16ffd080683100ad377fd\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/2ed0e48b21c5cb5115d981b50d9a3608d742e6fa"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/2ed0e48b21c5cb5115d981b50d9a3608d742e6fa"}]},"branch":"refs/heads/master"},"61082f83aceb2924d2e46b9885bba8c53aa03a52":{"kind":"REWORK","_number":10,"created":"2024-08-05 05:05:06.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/61/916861/10","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/61/916861/10","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/10 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/10 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/10 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/61/916861/10"}}},"commit":{"parents":[{"commit":"e984de864dd0895f4bde81bed56691c48e7cea52","subject":"trivial: assert non_negative_int treats float as valid","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/e984de864dd0895f4bde81bed56691c48e7cea52"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-04-24 05:16:15.000000000","tz":600},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-08-05 05:04:49.000000000","tz":600},"subject":"db_auditor: add vacuum support","message":"db_auditor: add vacuum support\n\nAs an SQLite database rows are deleted the file can become more sparse and\nfragmented. When this happens the DB needs to be vacuumed.\nA good indicator of sparsness in the file is the freelist page count.\nWhich is the number of pages that have been freed up (but not used).\nThe higher this number, the more sparse the file is getting. We can\nmontior this number while the db_auditor visits DBs and when it gets high\nenough we can trigger a vacuum.\n\nIn testing on a large root container downstream, a 500+MB sparse DB had:\n\n  $ sqlite3 \u003clarge_root_db\u003e.db \".dbinfo\"\n  ..\n  freelist page count: 569463\n\nOnce vacumed it only took up 13MB and a freelist page count of 0.\nFrom python we can get this freelist page count by:\n\n  cur \u003d conn.execute(\"PRAGMA freelist_count\")\n  cur.fetchone()\n  \u003e\u003e (569463,)\n\nWe can also use PRAGMA\u0027s to get the page_size and total page count,\nusing these we calculate the freepage size (in bytes) and ratio with\nused pages (free page percentage). This allows up to add 2 new\ndb_replicator options:\n\n  - vacuum_threshold_size: The size (in bytes) the freepages need to\n        take up before a vacuum is performed.\n  - vacuum_threshold_percent: The percent of freepages before a vacuum\n        is performed.\n\nThe patch also adds a few more increment metrics, firstly `vacuum.success`\nand `vacuum.failure` so we can track how many DBs get vacuumed.\n\nBut also some metrics that fire off for _every_ db, whether the\nthreshold settings are enabled for not, to help us track the\nbloatiness of DBs in the cluster and help ops determine starting\nthresholds:\n\n    \u003cserver-type\u003e.freelist.percent.\u003cbucket\u003e\n    \u003cserver-type\u003e.freelist.size.\u003cbucket\u003eMB\n\nFor example:\n\n    container.freelist.percent.70-79\n    account.freelist.size.128-255MB\n\nThis first is an incremented if the container DB\u0027s freelist page percent\nis between 70% and 80%. The second is an account whose freelist page\nsize is between 128MB and 255MB.\n\nThese should give us a basic gauge of the bloatiness of the metadata\nlayer in swift.\n\nThe advantages of having the auditor do the vacuum are:\n\n - busy containers can get defragged and hopefully run more efficiently.\n - vacuumed containers means less data over the network during rebases.\n - We can tune to only vacuum when we want (over some threshold).\n - The extra io happens in the eventual consistancy engine and by the\n   auditor, which probably makes more sense.\n\nCloses-Bug: #1691648\nChange-Id: Ic731f0d93b3054149db16ffd080683100ad377fd\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/61082f83aceb2924d2e46b9885bba8c53aa03a52"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/61082f83aceb2924d2e46b9885bba8c53aa03a52"}]},"branch":"refs/heads/master"},"41dfaf0de4f3eb3a21687d5d4fc0d2318ac474ab":{"kind":"REWORK","_number":11,"created":"2024-10-30 08:44:35.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/61/916861/11","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/61/916861/11","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/11 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/11 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/11 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/61/916861/11"}}},"commit":{"parents":[{"commit":"e984de864dd0895f4bde81bed56691c48e7cea52","subject":"trivial: assert non_negative_int treats float as valid","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/e984de864dd0895f4bde81bed56691c48e7cea52"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-04-24 05:16:15.000000000","tz":600},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-10-30 08:44:20.000000000","tz":660},"subject":"db_auditor: add vacuum support","message":"db_auditor: add vacuum support\n\nAs an SQLite database rows are deleted the file can become more sparse and\nfragmented. When this happens the DB needs to be vacuumed.\nA good indicator of sparsness in the file is the freelist page count.\nWhich is the number of pages that have been freed up (but not used).\nThe higher this number, the more sparse the file is getting. We can\nmontior this number while the db_auditor visits DBs and when it gets high\nenough we can trigger a vacuum.\n\nIn testing on a large root container downstream, a 500+MB sparse DB had:\n\n  $ sqlite3 \u003clarge_root_db\u003e.db \".dbinfo\"\n  ..\n  freelist page count: 569463\n\nOnce vacumed it only took up 13MB and a freelist page count of 0.\nFrom python we can get this freelist page count by:\n\n  cur \u003d conn.execute(\"PRAGMA freelist_count\")\n  cur.fetchone()\n  \u003e\u003e (569463,)\n\nWe can also use PRAGMA\u0027s to get the page_size and total page count,\nusing these we calculate the freepage size (in bytes) and ratio with\nused pages (free page percentage). This allows up to add 2 new\ndb_replicator options:\n\n  - vacuum_threshold_size: The size (in bytes) the freepages need to\n        take up before a vacuum is performed.\n  - vacuum_threshold_percent: The percent of freepages before a vacuum\n        is performed.\n\nThe patch also adds a few more increment metrics, firstly `vacuum.success`\nand `vacuum.failure` so we can track how many DBs get vacuumed.\n\nBut also some metrics that fire off for _every_ db, whether the\nthreshold settings are enabled for not, to help us track the\nbloatiness of DBs in the cluster and help ops determine starting\nthresholds:\n\n    \u003cserver-type\u003e.freelist.percent.\u003cbucket\u003e\n    \u003cserver-type\u003e.freelist.size.\u003cbucket\u003eMB\n\nFor example:\n\n    container.freelist.percent.70-79\n    account.freelist.size.128-255MB\n\nThis first is an incremented if the container DB\u0027s freelist page percent\nis between 70% and 80%. The second is an account whose freelist page\nsize is between 128MB and 255MB.\n\nThese should give us a basic gauge of the bloatiness of the metadata\nlayer in swift.\n\nThe advantages of having the auditor do the vacuum are:\n\n - busy containers can get defragged and hopefully run more efficiently.\n - vacuumed containers means less data over the network during rebases.\n - We can tune to only vacuum when we want (over some threshold).\n - The extra io happens in the eventual consistancy engine and by the\n   auditor, which probably makes more sense.\n\nCloses-Bug: #1691648\nChange-Id: Ic731f0d93b3054149db16ffd080683100ad377fd\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/41dfaf0de4f3eb3a21687d5d4fc0d2318ac474ab"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/41dfaf0de4f3eb3a21687d5d4fc0d2318ac474ab"}]},"branch":"refs/heads/master"},"7e54ae70074521ccdda692591fe41c08a6da789c":{"kind":"REWORK","_number":12,"created":"2024-11-06 06:31:32.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/61/916861/12","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/61/916861/12","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/12 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/12 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/12 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/61/916861/12"}}},"commit":{"parents":[{"commit":"e984de864dd0895f4bde81bed56691c48e7cea52","subject":"trivial: assert non_negative_int treats float as valid","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/e984de864dd0895f4bde81bed56691c48e7cea52"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-04-24 05:16:15.000000000","tz":600},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-11-06 06:31:16.000000000","tz":660},"subject":"db_auditor: add vacuum support","message":"db_auditor: add vacuum support\n\nAs an SQLite database rows are deleted the file can become more sparse and\nfragmented. When this happens the DB needs to be vacuumed.\nA good indicator of sparsness in the file is the freelist page count.\nWhich is the number of pages that have been freed up (but not used).\nThe higher this number, the more sparse the file is getting. We can\nmontior this number while the db_auditor visits DBs and when it gets high\nenough we can trigger a vacuum.\n\nIn testing on a large root container downstream, a 500+MB sparse DB had:\n\n  $ sqlite3 \u003clarge_root_db\u003e.db \".dbinfo\"\n  ..\n  freelist page count: 569463\n\nOnce vacumed it only took up 13MB and a freelist page count of 0.\nFrom python we can get this freelist page count by:\n\n  cur \u003d conn.execute(\"PRAGMA freelist_count\")\n  cur.fetchone()\n  \u003e\u003e (569463,)\n\nWe can also use PRAGMA\u0027s to get the page_size and total page count,\nusing these we calculate the freepage size (in bytes) and ratio with\nused pages (free page percentage). This allows up to add 2 new\ndb_replicator options:\n\n  - vacuum_threshold_size: The size (in bytes) the freepages need to\n        take up before a vacuum is performed.\n  - vacuum_threshold_percent: The percent of freepages before a vacuum\n        is performed.\n\nThe patch also adds a few more increment metrics, firstly `vacuum.success`\nand `vacuum.failure` so we can track how many DBs get vacuumed.\n\nBut also some metrics that fire off for _every_ db, whether the\nthreshold settings are enabled for not, to help us track the\nbloatiness of DBs in the cluster and help ops determine starting\nthresholds:\n\n    \u003cserver-type\u003e.freelist.percent.\u003cbucket\u003e\n    \u003cserver-type\u003e.freelist.size.\u003cbucket\u003eMB\n\nFor example:\n\n    container.freelist.percent.70-79\n    account.freelist.size.128-255MB\n\nThis first is an incremented if the container DB\u0027s freelist page percent\nis between 70% and 80%. The second is an account whose freelist page\nsize is between 128MB and 255MB.\n\nThese should give us a basic gauge of the bloatiness of the metadata\nlayer in swift.\n\nThe advantages of having the auditor do the vacuum are:\n\n - busy containers can get defragged and hopefully run more efficiently.\n - vacuumed containers means less data over the network during rebases.\n - We can tune to only vacuum when we want (over some threshold).\n - The extra io happens in the eventual consistancy engine and by the\n   auditor, which probably makes more sense.\n\nCloses-Bug: #1691648\nChange-Id: Ic731f0d93b3054149db16ffd080683100ad377fd\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/7e54ae70074521ccdda692591fe41c08a6da789c"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/7e54ae70074521ccdda692591fe41c08a6da789c"}]},"branch":"refs/heads/master"},"95196a193a2c69bde05608f599577d33a04cff53":{"kind":"REWORK","_number":13,"created":"2024-11-06 08:31:25.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/61/916861/13","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/61/916861/13","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/13 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/13 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/13 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/61/916861/13"}}},"commit":{"parents":[{"commit":"7662cde704849b424ad3497b10f5fef35ae0a947","subject":"Merge \"Add oldest failed async pending tracker\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/7662cde704849b424ad3497b10f5fef35ae0a947"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-11-06 08:05:22.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-11-06 08:17:11.000000000","tz":660},"subject":"db_auditor: add vacuum support","message":"db_auditor: add vacuum support\n\nAs an SQLite database rows are deleted the file can become more sparse and\nfragmented. When this happens the DB needs to be vacuumed.\nA good indicator of sparsness in the file is the freelist page count.\nWhich is the number of pages that have been freed up (but not used).\nThe higher this number, the more sparse the file is getting. We can\nmontior this number while the db_auditor visits DBs and when it gets high\nenough we can trigger a vacuum.\n\nIn testing on a large root container downstream, a 500+MB sparse DB had:\n\n  $ sqlite3 \u003clarge_root_db\u003e.db \".dbinfo\"\n  ..\n  freelist page count: 569463\n\nOnce vacumed it only took up 13MB and a freelist page count of 0.\nFrom python we can get this freelist page count by:\n\n  cur \u003d conn.execute(\"PRAGMA freelist_count\")\n  cur.fetchone()\n  \u003e\u003e (569463,)\n\nWe can also use PRAGMA\u0027s to get the page_size and total page count,\nusing these we calculate the freepage size (in bytes) and ratio with\nused pages (free page percentage). This allows up to add 2 new\ndb_replicator options:\n\n  - vacuum_threshold_size: The size (in bytes) the freepages need to\n        take up before a vacuum is performed.\n  - vacuum_threshold_percent: The percent of freepages before a vacuum\n        is performed.\n\nThe patch also adds a few more increment metrics, firstly `vacuum.success`\nand `vacuum.failure` so we can track how many DBs get vacuumed.\n\nBut also some metrics that fire off for _every_ db, whether the\nthreshold settings are enabled for not, to help us track the\nbloatiness of DBs in the cluster and help ops determine starting\nthresholds:\n\n    \u003cserver-type\u003e.freelist.percent.\u003cbucket\u003e\n    \u003cserver-type\u003e.freelist.size.\u003cbucket\u003eMB\n\nFor example:\n\n    container.freelist.percent.70-79\n    account.freelist.size.128-255MB\n\nThis first is an incremented if the container DB\u0027s freelist page percent\nis between 70% and 80%. The second is an account whose freelist page\nsize is between 128MB and 255MB.\n\nThese should give us a basic gauge of the bloatiness of the metadata\nlayer in swift.\n\nThe advantages of having the auditor do the vacuum are:\n\n - busy containers can get defragged and hopefully run more efficiently.\n - vacuumed containers means less data over the network during rebases.\n - We can tune to only vacuum when we want (over some threshold).\n - The extra io happens in the eventual consistancy engine and by the\n   auditor, which probably makes more sense.\n\nCloses-Bug: #1691648\nChange-Id: Ic731f0d93b3054149db16ffd080683100ad377fd\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/95196a193a2c69bde05608f599577d33a04cff53"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/95196a193a2c69bde05608f599577d33a04cff53"}]},"branch":"refs/heads/master"},"119f938d7d6679688107be9a960cafd27a21a86b":{"kind":"REWORK","_number":14,"created":"2025-04-10 23:22:52.000000000","uploader":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"ref":"refs/changes/61/916861/14","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/61/916861/14","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/14 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/14 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/14 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/61/916861/14"}}},"commit":{"parents":[{"commit":"c7f93f0f63841140d75c21a833647073fb3f4eb3","subject":"Merge \"Add skip reason next to test name in zuul output\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/c7f93f0f63841140d75c21a833647073fb3f4eb3"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-11-06 08:05:22.000000000","tz":660},"committer":{"name":"ashnair","email":"ashnair@nvidia.com","date":"2025-04-10 23:22:42.000000000","tz":-420},"subject":"db_auditor: add vacuum support","message":"db_auditor: add vacuum support\n\nAs an SQLite database rows are deleted the file can become more sparse and\nfragmented. When this happens the DB needs to be vacuumed.\nA good indicator of sparsness in the file is the freelist page count.\nWhich is the number of pages that have been freed up (but not used).\nThe higher this number, the more sparse the file is getting. We can\nmontior this number while the db_auditor visits DBs and when it gets high\nenough we can trigger a vacuum.\n\nIn testing on a large root container downstream, a 500+MB sparse DB had:\n\n  $ sqlite3 \u003clarge_root_db\u003e.db \".dbinfo\"\n  ..\n  freelist page count: 569463\n\nOnce vacumed it only took up 13MB and a freelist page count of 0.\nFrom python we can get this freelist page count by:\n\n  cur \u003d conn.execute(\"PRAGMA freelist_count\")\n  cur.fetchone()\n  \u003e\u003e (569463,)\n\nWe can also use PRAGMA\u0027s to get the page_size and total page count,\nusing these we calculate the freepage size (in bytes) and ratio with\nused pages (free page percentage). This allows up to add 2 new\ndb_replicator options:\n\n  - vacuum_threshold_size: The size (in bytes) the freepages need to\n        take up before a vacuum is performed.\n  - vacuum_threshold_percent: The percent of freepages before a vacuum\n        is performed.\n\nThe patch also adds a few more increment metrics, firstly `vacuum.success`\nand `vacuum.failure` so we can track how many DBs get vacuumed.\n\nBut also some metrics that fire off for _every_ db, whether the\nthreshold settings are enabled for not, to help us track the\nbloatiness of DBs in the cluster and help ops determine starting\nthresholds:\n\n    \u003cserver-type\u003e.freelist.percent.\u003cbucket\u003e\n    \u003cserver-type\u003e.freelist.size.\u003cbucket\u003eMB\n\nFor example:\n\n    container.freelist.percent.70-79\n    account.freelist.size.128-255MB\n\nThis first is an incremented if the container DB\u0027s freelist page percent\nis between 70% and 80%. The second is an account whose freelist page\nsize is between 128MB and 255MB.\n\nThese should give us a basic gauge of the bloatiness of the metadata\nlayer in swift.\n\nThe advantages of having the auditor do the vacuum are:\n\n - busy containers can get defragged and hopefully run more efficiently.\n - vacuumed containers means less data over the network during rebases.\n - We can tune to only vacuum when we want (over some threshold).\n - The extra io happens in the eventual consistancy engine and by the\n   auditor, which probably makes more sense.\n\nCloses-Bug: #1691648\nChange-Id: Ic731f0d93b3054149db16ffd080683100ad377fd\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/119f938d7d6679688107be9a960cafd27a21a86b"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/119f938d7d6679688107be9a960cafd27a21a86b"}]},"branch":"refs/heads/master"},"f7bc7150bc465ddc61d31218772e7448c3020f4f":{"kind":"NO_CODE_CHANGE","_number":15,"created":"2025-04-11 04:54:09.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/61/916861/15","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/61/916861/15","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/15 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/15 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/15 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/61/916861/15"}}},"commit":{"parents":[{"commit":"c7f93f0f63841140d75c21a833647073fb3f4eb3","subject":"Merge \"Add skip reason next to test name in zuul output\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/c7f93f0f63841140d75c21a833647073fb3f4eb3"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-11-06 08:05:22.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2025-04-11 04:34:32.000000000","tz":600},"subject":"db_auditor: add vacuum support","message":"db_auditor: add vacuum support\n\nAs an SQLite database rows are deleted the file can become more sparse and\nfragmented. When this happens the DB needs to be vacuumed.\nA good indicator of sparsness in the file is the freelist page count.\nWhich is the number of pages that have been freed up (but not used).\nThe higher this number, the more sparse the file is getting. We can\nmontior this number while the db_auditor visits DBs and when it gets high\nenough we can trigger a vacuum.\n\nIn testing on a large root container downstream, a 500+MB sparse DB had:\n\n  $ sqlite3 \u003clarge_root_db\u003e.db \".dbinfo\"\n  ..\n  freelist page count: 569463\n\nOnce vacumed it only took up 13MB and a freelist page count of 0.\nFrom python we can get this freelist page count by:\n\n  cur \u003d conn.execute(\"PRAGMA freelist_count\")\n  cur.fetchone()\n  \u003e\u003e (569463,)\n\nWe can also use PRAGMA\u0027s to get the page_size and total page count,\nusing these we calculate the freepage size (in bytes) and ratio with\nused pages (free page percentage). This allows up to add 2 new\ndb_replicator options:\n\n  - vacuum_threshold_size: The size (in bytes) the freepages need to\n        take up before a vacuum is performed.\n  - vacuum_threshold_percent: The percent of freepages before a vacuum\n        is performed.\n\nThe patch also adds a few more increment metrics:\n - vacuum.success: The number of successful vacuums\n - vacuum.failure: The number of vacuums that failed\n - freelist_size: Incremented when a vacuum is triggered by the\n   freepage size exceeds the `max_freelist_size` given option.\n - freelist_percent: Incremented when a vacuum is triggered by the\n   freepage ratio of freepages to pages exceeds the `max_freelist_percent`\n   given option.\n\nTo enable vacuuming one or both of either `max_free_size` or\n`max_free_percent` is a positive value.\n\nEven without enabling vacuuming the db_auditor will now emit recon stats\nfor the last cycle. These include the values above, but also some\nspecial buckets that ops/SRE can use to see how bloated container and\naccount dbs are in their clusters, here is an example:\n\n  jq .container_freepage_stats /var/cache/swift/container.recon\n  {\n    \"percent\": {\n      \"container.freelist.percent.0-9\": 61298,\n      \"container.freelist.percent.10-19\": 3433,\n      \"container.freelist.percent.20-29\": 5836,\n      \"container.freelist.percent.30-39\": 3254,\n      \"container.freelist.percent.40-49\": 2860,\n      \"container.freelist.percent.50-59\": 2673,\n      \"container.freelist.percent.60-69\": 2785,\n      \"container.freelist.percent.70-79\": 3140,\n      \"container.freelist.percent.80-89\": 6259,\n      \"container.freelist.percent.90-99\": 12327\n    },\n    \"size\": {\n      \"container.freelist.size.0-1MB\": 98857,\n      \"container.freelist.size.2-3MB\": 1624,\n      \"container.freelist.size.4-7MB\": 788,\n      \"container.freelist.size.8-15MB\": 195\n      \"container.freelist.size.16-31MB\": 116,\n      \"container.freelist.size.32-63MB\": 139,\n      \"container.freelist.size.64-127MB\": 106,\n      \"container.freelist.size.128-255MB\": 377,\n      \"container.freelist.size.256-511MB\": 817,\n      \"container.freelist.size.512-1023MB\": 767,\n      \"container.freelist.size.1024-2047MB\": 73,\n      \"container.freelist.size.2048-4095MB\": 6,\n    }\n  }\n\nAs you can see the size buckets go up in powers of 2, but the percent\nbuckets are in 10s. This just limits the amount of buckets.\n\nThese should give us a basic gauge of the bloatiness of the metadata\nlayer in swift.\n\nThe advantages of having the auditor do the vacuum are:\n\n - busy containers can get defragged and hopefully run more efficiently.\n - vacuumed containers means less data over the network during rebases.\n - We can tune to only vacuum when we want (over some threshold).\n - The extra io happens in the eventual consistency engine and by the\n   auditor, which probably makes more sense.\n\nCloses-Bug: #1691648\nChange-Id: Ic731f0d93b3054149db16ffd080683100ad377fd\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/f7bc7150bc465ddc61d31218772e7448c3020f4f"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/f7bc7150bc465ddc61d31218772e7448c3020f4f"}]},"branch":"refs/heads/master"},"d06f01728b1df0f95493ac39edffed3dedacbb2c":{"kind":"TRIVIAL_REBASE","_number":16,"created":"2025-05-20 15:56:54.000000000","uploader":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"ref":"refs/changes/61/916861/16","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/61/916861/16","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/16 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/16 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/16 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/61/916861/16"}}},"commit":{"parents":[{"commit":"e67e15af95cc6112c6241b8a8643bbee966aebd2","subject":"proxy: use cooperative tokens to coalesce updating shard range requests into backend","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/e67e15af95cc6112c6241b8a8643bbee966aebd2"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-11-06 08:05:22.000000000","tz":660},"committer":{"name":"ashnair","email":"ashnair@nvidia.com","date":"2025-05-20 14:56:11.000000000","tz":-420},"subject":"db_auditor: add vacuum support","message":"db_auditor: add vacuum support\n\nAs an SQLite database rows are deleted the file can become more sparse and\nfragmented. When this happens the DB needs to be vacuumed.\nA good indicator of sparsness in the file is the freelist page count.\nWhich is the number of pages that have been freed up (but not used).\nThe higher this number, the more sparse the file is getting. We can\nmontior this number while the db_auditor visits DBs and when it gets high\nenough we can trigger a vacuum.\n\nIn testing on a large root container downstream, a 500+MB sparse DB had:\n\n  $ sqlite3 \u003clarge_root_db\u003e.db \".dbinfo\"\n  ..\n  freelist page count: 569463\n\nOnce vacumed it only took up 13MB and a freelist page count of 0.\nFrom python we can get this freelist page count by:\n\n  cur \u003d conn.execute(\"PRAGMA freelist_count\")\n  cur.fetchone()\n  \u003e\u003e (569463,)\n\nWe can also use PRAGMA\u0027s to get the page_size and total page count,\nusing these we calculate the freepage size (in bytes) and ratio with\nused pages (free page percentage). This allows up to add 2 new\ndb_replicator options:\n\n  - vacuum_threshold_size: The size (in bytes) the freepages need to\n        take up before a vacuum is performed.\n  - vacuum_threshold_percent: The percent of freepages before a vacuum\n        is performed.\n\nThe patch also adds a few more increment metrics:\n - vacuum.success: The number of successful vacuums\n - vacuum.failure: The number of vacuums that failed\n - freelist_size: Incremented when a vacuum is triggered by the\n   freepage size exceeds the `max_freelist_size` given option.\n - freelist_percent: Incremented when a vacuum is triggered by the\n   freepage ratio of freepages to pages exceeds the `max_freelist_percent`\n   given option.\n\nTo enable vacuuming one or both of either `max_free_size` or\n`max_free_percent` is a positive value.\n\nEven without enabling vacuuming the db_auditor will now emit recon stats\nfor the last cycle. These include the values above, but also some\nspecial buckets that ops/SRE can use to see how bloated container and\naccount dbs are in their clusters, here is an example:\n\n  jq .container_freepage_stats /var/cache/swift/container.recon\n  {\n    \"percent\": {\n      \"container.freelist.percent.0-9\": 61298,\n      \"container.freelist.percent.10-19\": 3433,\n      \"container.freelist.percent.20-29\": 5836,\n      \"container.freelist.percent.30-39\": 3254,\n      \"container.freelist.percent.40-49\": 2860,\n      \"container.freelist.percent.50-59\": 2673,\n      \"container.freelist.percent.60-69\": 2785,\n      \"container.freelist.percent.70-79\": 3140,\n      \"container.freelist.percent.80-89\": 6259,\n      \"container.freelist.percent.90-99\": 12327\n    },\n    \"size\": {\n      \"container.freelist.size.0-1MB\": 98857,\n      \"container.freelist.size.2-3MB\": 1624,\n      \"container.freelist.size.4-7MB\": 788,\n      \"container.freelist.size.8-15MB\": 195\n      \"container.freelist.size.16-31MB\": 116,\n      \"container.freelist.size.32-63MB\": 139,\n      \"container.freelist.size.64-127MB\": 106,\n      \"container.freelist.size.128-255MB\": 377,\n      \"container.freelist.size.256-511MB\": 817,\n      \"container.freelist.size.512-1023MB\": 767,\n      \"container.freelist.size.1024-2047MB\": 73,\n      \"container.freelist.size.2048-4095MB\": 6,\n    }\n  }\n\nAs you can see the size buckets go up in powers of 2, but the percent\nbuckets are in 10s. This just limits the amount of buckets.\n\nThese should give us a basic gauge of the bloatiness of the metadata\nlayer in swift.\n\nThe advantages of having the auditor do the vacuum are:\n\n - busy containers can get defragged and hopefully run more efficiently.\n - vacuumed containers means less data over the network during rebases.\n - We can tune to only vacuum when we want (over some threshold).\n - The extra io happens in the eventual consistency engine and by the\n   auditor, which probably makes more sense.\n\nCloses-Bug: #1691648\nChange-Id: Ic731f0d93b3054149db16ffd080683100ad377fd\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/d06f01728b1df0f95493ac39edffed3dedacbb2c"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/d06f01728b1df0f95493ac39edffed3dedacbb2c"}]},"branch":"refs/heads/master"},"54063b6ae57ad7bf3eb08814f371fe800d96740c":{"kind":"TRIVIAL_REBASE","_number":17,"created":"2025-05-20 16:56:17.000000000","uploader":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"ref":"refs/changes/61/916861/17","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/61/916861/17","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/17 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/17 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/17 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/61/916861/17"}}},"commit":{"parents":[{"commit":"b735b3d034b11e1472f7b471919649d165c447e0","subject":"object-server: return 503 not 404 if meta or data file unlinked","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/b735b3d034b11e1472f7b471919649d165c447e0"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-11-06 08:05:22.000000000","tz":660},"committer":{"name":"ASHWIN A NAIR","email":"ashnair@nvidia.com","date":"2025-05-20 16:56:17.000000000","tz":0},"subject":"db_auditor: add vacuum support","message":"db_auditor: add vacuum support\n\nAs an SQLite database rows are deleted the file can become more sparse and\nfragmented. When this happens the DB needs to be vacuumed.\nA good indicator of sparsness in the file is the freelist page count.\nWhich is the number of pages that have been freed up (but not used).\nThe higher this number, the more sparse the file is getting. We can\nmontior this number while the db_auditor visits DBs and when it gets high\nenough we can trigger a vacuum.\n\nIn testing on a large root container downstream, a 500+MB sparse DB had:\n\n  $ sqlite3 \u003clarge_root_db\u003e.db \".dbinfo\"\n  ..\n  freelist page count: 569463\n\nOnce vacumed it only took up 13MB and a freelist page count of 0.\nFrom python we can get this freelist page count by:\n\n  cur \u003d conn.execute(\"PRAGMA freelist_count\")\n  cur.fetchone()\n  \u003e\u003e (569463,)\n\nWe can also use PRAGMA\u0027s to get the page_size and total page count,\nusing these we calculate the freepage size (in bytes) and ratio with\nused pages (free page percentage). This allows up to add 2 new\ndb_replicator options:\n\n  - vacuum_threshold_size: The size (in bytes) the freepages need to\n        take up before a vacuum is performed.\n  - vacuum_threshold_percent: The percent of freepages before a vacuum\n        is performed.\n\nThe patch also adds a few more increment metrics:\n - vacuum.success: The number of successful vacuums\n - vacuum.failure: The number of vacuums that failed\n - freelist_size: Incremented when a vacuum is triggered by the\n   freepage size exceeds the `max_freelist_size` given option.\n - freelist_percent: Incremented when a vacuum is triggered by the\n   freepage ratio of freepages to pages exceeds the `max_freelist_percent`\n   given option.\n\nTo enable vacuuming one or both of either `max_free_size` or\n`max_free_percent` is a positive value.\n\nEven without enabling vacuuming the db_auditor will now emit recon stats\nfor the last cycle. These include the values above, but also some\nspecial buckets that ops/SRE can use to see how bloated container and\naccount dbs are in their clusters, here is an example:\n\n  jq .container_freepage_stats /var/cache/swift/container.recon\n  {\n    \"percent\": {\n      \"container.freelist.percent.0-9\": 61298,\n      \"container.freelist.percent.10-19\": 3433,\n      \"container.freelist.percent.20-29\": 5836,\n      \"container.freelist.percent.30-39\": 3254,\n      \"container.freelist.percent.40-49\": 2860,\n      \"container.freelist.percent.50-59\": 2673,\n      \"container.freelist.percent.60-69\": 2785,\n      \"container.freelist.percent.70-79\": 3140,\n      \"container.freelist.percent.80-89\": 6259,\n      \"container.freelist.percent.90-99\": 12327\n    },\n    \"size\": {\n      \"container.freelist.size.0-1MB\": 98857,\n      \"container.freelist.size.2-3MB\": 1624,\n      \"container.freelist.size.4-7MB\": 788,\n      \"container.freelist.size.8-15MB\": 195\n      \"container.freelist.size.16-31MB\": 116,\n      \"container.freelist.size.32-63MB\": 139,\n      \"container.freelist.size.64-127MB\": 106,\n      \"container.freelist.size.128-255MB\": 377,\n      \"container.freelist.size.256-511MB\": 817,\n      \"container.freelist.size.512-1023MB\": 767,\n      \"container.freelist.size.1024-2047MB\": 73,\n      \"container.freelist.size.2048-4095MB\": 6,\n    }\n  }\n\nAs you can see the size buckets go up in powers of 2, but the percent\nbuckets are in 10s. This just limits the amount of buckets.\n\nThese should give us a basic gauge of the bloatiness of the metadata\nlayer in swift.\n\nThe advantages of having the auditor do the vacuum are:\n\n - busy containers can get defragged and hopefully run more efficiently.\n - vacuumed containers means less data over the network during rebases.\n - We can tune to only vacuum when we want (over some threshold).\n - The extra io happens in the eventual consistency engine and by the\n   auditor, which probably makes more sense.\n\nCloses-Bug: #1691648\nChange-Id: Ic731f0d93b3054149db16ffd080683100ad377fd\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/54063b6ae57ad7bf3eb08814f371fe800d96740c"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/54063b6ae57ad7bf3eb08814f371fe800d96740c"}]},"branch":"refs/heads/master","description":"Rebase"},"be969684dc4d3602aafd677cd2094a6e0f8fad94":{"kind":"REWORK","_number":18,"created":"2025-12-10 22:53:12.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/61/916861/18","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/61/916861/18","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/18 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/18 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/18 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/61/916861/18"}}},"commit":{"parents":[{"commit":"3201b5393f3f9b7d6bbd292024257c0474e224dd","subject":"Merge \"wsgi: Add url length limit config\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/3201b5393f3f9b7d6bbd292024257c0474e224dd"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-11-06 08:05:22.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2025-12-10 22:26:10.000000000","tz":660},"subject":"db_auditor: add vacuum support","message":"db_auditor: add vacuum support\n\nAs an SQLite database rows are deleted the file can become more sparse and\nfragmented. When this happens the DB needs to be vacuumed.\nA good indicator of sparsness in the file is the freelist page count.\nWhich is the number of pages that have been freed up (but not used).\nThe higher this number, the more sparse the file is getting. We can\nmontior this number while the db_auditor visits DBs and when it gets high\nenough we can trigger a vacuum.\n\nIn testing on a large root container downstream, a 500+MB sparse DB had:\n\n  $ sqlite3 \u003clarge_root_db\u003e.db \".dbinfo\"\n  ..\n  freelist page count: 569463\n\nOnce vacumed it only took up 13MB and a freelist page count of 0.\nFrom python we can get this freelist page count by:\n\n  cur \u003d conn.execute(\"PRAGMA freelist_count\")\n  cur.fetchone()\n  \u003e\u003e (569463,)\n\nWe can also use PRAGMA\u0027s to get the page_size and total page count,\nusing these we calculate the freepage size (in bytes) and ratio with\nused pages (free page percentage). This allows up to add 2 new\ndb_replicator options:\n\n  - vacuum_threshold_size: The size (in bytes) the freepages need to\n        take up before a vacuum is performed.\n  - vacuum_threshold_percent: The percent of freepages before a vacuum\n        is performed.\n\nThe patch also adds a few more increment metrics:\n - vacuum.success: The number of successful vacuums\n - vacuum.failure: The number of vacuums that failed\n - freelist_size: Incremented when a vacuum is triggered by the\n   freepage size exceeds the `max_freelist_size` given option.\n - freelist_percent: Incremented when a vacuum is triggered by the\n   freepage ratio of freepages to pages exceeds the `max_freelist_percent`\n   given option.\n\nTo enable vacuuming one or both of either `max_free_size` or\n`max_free_percent` is a positive value.\n\nEven without enabling vacuuming the db_auditor will now emit recon stats\nfor the last cycle. These include the values above, but also some\nspecial buckets that ops/SRE can use to see how bloated container and\naccount dbs are in their clusters, here is an example:\n\n  jq .container_freepage_stats /var/cache/swift/container.recon\n  {\n    \"percent\": {\n      \"container.freelist.percent.0-9\": 61298,\n      \"container.freelist.percent.10-19\": 3433,\n      \"container.freelist.percent.20-29\": 5836,\n      \"container.freelist.percent.30-39\": 3254,\n      \"container.freelist.percent.40-49\": 2860,\n      \"container.freelist.percent.50-59\": 2673,\n      \"container.freelist.percent.60-69\": 2785,\n      \"container.freelist.percent.70-79\": 3140,\n      \"container.freelist.percent.80-89\": 6259,\n      \"container.freelist.percent.90-99\": 12327\n    },\n    \"size\": {\n      \"container.freelist.size.0-1MB\": 98857,\n      \"container.freelist.size.2-3MB\": 1624,\n      \"container.freelist.size.4-7MB\": 788,\n      \"container.freelist.size.8-15MB\": 195\n      \"container.freelist.size.16-31MB\": 116,\n      \"container.freelist.size.32-63MB\": 139,\n      \"container.freelist.size.64-127MB\": 106,\n      \"container.freelist.size.128-255MB\": 377,\n      \"container.freelist.size.256-511MB\": 817,\n      \"container.freelist.size.512-1023MB\": 767,\n      \"container.freelist.size.1024-2047MB\": 73,\n      \"container.freelist.size.2048-4095MB\": 6,\n    }\n  }\n\nAs you can see the size buckets go up in powers of 2, but the percent\nbuckets are in 10s. This just limits the amount of buckets.\n\nThese should give us a basic gauge of the bloatiness of the metadata\nlayer in swift.\n\nThe advantages of having the auditor do the vacuum are:\n\n - busy containers can get defragged and hopefully run more efficiently.\n - vacuumed containers means less data over the network during rebases.\n - We can tune to only vacuum when we want (over some threshold).\n - The extra io happens in the eventual consistency engine and by the\n   auditor, which probably makes more sense.\n\nCloses-Bug: #1691648\nChange-Id: Ic731f0d93b3054149db16ffd080683100ad377fd\nSigned-off-by: Matthew Oliver \u003cmatt@oliver.net.au\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/be969684dc4d3602aafd677cd2094a6e0f8fad94"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/be969684dc4d3602aafd677cd2094a6e0f8fad94"}]},"branch":"refs/heads/master"},"47b7cdf890d612895e7e748aa0a2f6802f2260cc":{"kind":"REWORK","_number":19,"created":"2026-02-27 18:39:13.000000000","uploader":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"ref":"refs/changes/61/916861/19","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/61/916861/19","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/19 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/19 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/19 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/61/916861/19"}}},"commit":{"parents":[{"commit":"51b068309a626d2228ab69b5158ee857e96d101d","subject":"tests: more timestamp iter refactoring","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/51b068309a626d2228ab69b5158ee857e96d101d"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-11-06 08:05:22.000000000","tz":660},"committer":{"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","date":"2026-02-27 18:39:03.000000000","tz":-360},"subject":"db_auditor: add vacuum support","message":"db_auditor: add vacuum support\n\nAs an SQLite database rows are deleted the file can become more sparse and\nfragmented. When this happens the DB needs to be vacuumed.\nA good indicator of sparsness in the file is the freelist page count.\nWhich is the number of pages that have been freed up (but not used).\nThe higher this number, the more sparse the file is getting. We can\nmontior this number while the db_auditor visits DBs and when it gets high\nenough we can trigger a vacuum.\n\nIn testing on a large root container downstream, a 500+MB sparse DB had:\n\n  $ sqlite3 \u003clarge_root_db\u003e.db \".dbinfo\"\n  ..\n  freelist page count: 569463\n\nOnce vacumed it only took up 13MB and a freelist page count of 0.\nFrom python we can get this freelist page count by:\n\n  cur \u003d conn.execute(\"PRAGMA freelist_count\")\n  cur.fetchone()\n  \u003e\u003e (569463,)\n\nWe can also use PRAGMA\u0027s to get the page_size and total page count,\nusing these we calculate the freepage size (in bytes) and ratio with\nused pages (free page percentage). This allows up to add 2 new\ndb_replicator options:\n\n  - vacuum_threshold_size: The size (in bytes) the freepages need to\n        take up before a vacuum is performed.\n  - vacuum_threshold_percent: The percent of freepages before a vacuum\n        is performed.\n\nThe patch also adds a few more increment metrics:\n - vacuum.success: The number of successful vacuums\n - vacuum.failure: The number of vacuums that failed\n - freelist_size: Incremented when a vacuum is triggered by the\n   freepage size exceeds the `max_freelist_size` given option.\n - freelist_percent: Incremented when a vacuum is triggered by the\n   freepage ratio of freepages to pages exceeds the `max_freelist_percent`\n   given option.\n\nTo enable vacuuming one or both of either `max_free_size` or\n`max_free_percent` is a positive value.\n\nEven without enabling vacuuming the db_auditor will now emit recon stats\nfor the last cycle. These include the values above, but also some\nspecial buckets that ops/SRE can use to see how bloated container and\naccount dbs are in their clusters, here is an example:\n\n  jq .container_freepage_stats /var/cache/swift/container.recon\n  {\n    \"percent\": {\n      \"container.freelist.percent.0-9\": 61298,\n      \"container.freelist.percent.10-19\": 3433,\n      \"container.freelist.percent.20-29\": 5836,\n      \"container.freelist.percent.30-39\": 3254,\n      \"container.freelist.percent.40-49\": 2860,\n      \"container.freelist.percent.50-59\": 2673,\n      \"container.freelist.percent.60-69\": 2785,\n      \"container.freelist.percent.70-79\": 3140,\n      \"container.freelist.percent.80-89\": 6259,\n      \"container.freelist.percent.90-99\": 12327\n    },\n    \"size\": {\n      \"container.freelist.size.0-1MB\": 98857,\n      \"container.freelist.size.2-3MB\": 1624,\n      \"container.freelist.size.4-7MB\": 788,\n      \"container.freelist.size.8-15MB\": 195\n      \"container.freelist.size.16-31MB\": 116,\n      \"container.freelist.size.32-63MB\": 139,\n      \"container.freelist.size.64-127MB\": 106,\n      \"container.freelist.size.128-255MB\": 377,\n      \"container.freelist.size.256-511MB\": 817,\n      \"container.freelist.size.512-1023MB\": 767,\n      \"container.freelist.size.1024-2047MB\": 73,\n      \"container.freelist.size.2048-4095MB\": 6,\n    }\n  }\n\nAs you can see the size buckets go up in powers of 2, but the percent\nbuckets are in 10s. This just limits the amount of buckets.\n\nThese should give us a basic gauge of the bloatiness of the metadata\nlayer in swift.\n\nThe advantages of having the auditor do the vacuum are:\n\n - busy containers can get defragged and hopefully run more efficiently.\n - vacuumed containers means less data over the network during rebases.\n - We can tune to only vacuum when we want (over some threshold).\n - The extra io happens in the eventual consistency engine and by the\n   auditor, which probably makes more sense.\n\nCloses-Bug: #1691648\nChange-Id: Ic731f0d93b3054149db16ffd080683100ad377fd\nSigned-off-by: Matthew Oliver \u003cmatt@oliver.net.au\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/47b7cdf890d612895e7e748aa0a2f6802f2260cc"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/47b7cdf890d612895e7e748aa0a2f6802f2260cc"}]},"branch":"refs/heads/master"},"2d9bb059bd9561cadeb596cfffe608df5b626886":{"kind":"TRIVIAL_REBASE","_number":20,"created":"2026-03-18 14:39:47.000000000","uploader":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"ref":"refs/changes/61/916861/20","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/61/916861/20","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/20 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/20 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/20 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/61/916861/20"}}},"commit":{"parents":[{"commit":"a1e4d7144e65c09f53237ae445139ae7a5baa488","subject":"s3api: add API support for optional bucket inventory","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/a1e4d7144e65c09f53237ae445139ae7a5baa488"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-11-06 08:05:22.000000000","tz":660},"committer":{"name":"Alistair Coles","email":"alistairncoles@gmail.com","date":"2026-03-18 14:38:51.000000000","tz":0},"subject":"db_auditor: add vacuum support","message":"db_auditor: add vacuum support\n\nAs an SQLite database rows are deleted the file can become more sparse and\nfragmented. When this happens the DB needs to be vacuumed.\nA good indicator of sparsness in the file is the freelist page count.\nWhich is the number of pages that have been freed up (but not used).\nThe higher this number, the more sparse the file is getting. We can\nmontior this number while the db_auditor visits DBs and when it gets high\nenough we can trigger a vacuum.\n\nIn testing on a large root container downstream, a 500+MB sparse DB had:\n\n  $ sqlite3 \u003clarge_root_db\u003e.db \".dbinfo\"\n  ..\n  freelist page count: 569463\n\nOnce vacumed it only took up 13MB and a freelist page count of 0.\nFrom python we can get this freelist page count by:\n\n  cur \u003d conn.execute(\"PRAGMA freelist_count\")\n  cur.fetchone()\n  \u003e\u003e (569463,)\n\nWe can also use PRAGMA\u0027s to get the page_size and total page count,\nusing these we calculate the freepage size (in bytes) and ratio with\nused pages (free page percentage). This allows up to add 2 new\ndb_replicator options:\n\n  - vacuum_threshold_size: The size (in bytes) the freepages need to\n        take up before a vacuum is performed.\n  - vacuum_threshold_percent: The percent of freepages before a vacuum\n        is performed.\n\nThe patch also adds a few more increment metrics:\n - vacuum.success: The number of successful vacuums\n - vacuum.failure: The number of vacuums that failed\n - freelist_size: Incremented when a vacuum is triggered by the\n   freepage size exceeds the `max_freelist_size` given option.\n - freelist_percent: Incremented when a vacuum is triggered by the\n   freepage ratio of freepages to pages exceeds the `max_freelist_percent`\n   given option.\n\nTo enable vacuuming one or both of either `max_free_size` or\n`max_free_percent` is a positive value.\n\nEven without enabling vacuuming the db_auditor will now emit recon stats\nfor the last cycle. These include the values above, but also some\nspecial buckets that ops/SRE can use to see how bloated container and\naccount dbs are in their clusters, here is an example:\n\n  jq .container_freepage_stats /var/cache/swift/container.recon\n  {\n    \"percent\": {\n      \"container.freelist.percent.0-9\": 61298,\n      \"container.freelist.percent.10-19\": 3433,\n      \"container.freelist.percent.20-29\": 5836,\n      \"container.freelist.percent.30-39\": 3254,\n      \"container.freelist.percent.40-49\": 2860,\n      \"container.freelist.percent.50-59\": 2673,\n      \"container.freelist.percent.60-69\": 2785,\n      \"container.freelist.percent.70-79\": 3140,\n      \"container.freelist.percent.80-89\": 6259,\n      \"container.freelist.percent.90-99\": 12327\n    },\n    \"size\": {\n      \"container.freelist.size.0-1MB\": 98857,\n      \"container.freelist.size.2-3MB\": 1624,\n      \"container.freelist.size.4-7MB\": 788,\n      \"container.freelist.size.8-15MB\": 195\n      \"container.freelist.size.16-31MB\": 116,\n      \"container.freelist.size.32-63MB\": 139,\n      \"container.freelist.size.64-127MB\": 106,\n      \"container.freelist.size.128-255MB\": 377,\n      \"container.freelist.size.256-511MB\": 817,\n      \"container.freelist.size.512-1023MB\": 767,\n      \"container.freelist.size.1024-2047MB\": 73,\n      \"container.freelist.size.2048-4095MB\": 6,\n    }\n  }\n\nAs you can see the size buckets go up in powers of 2, but the percent\nbuckets are in 10s. This just limits the amount of buckets.\n\nThese should give us a basic gauge of the bloatiness of the metadata\nlayer in swift.\n\nThe advantages of having the auditor do the vacuum are:\n\n - busy containers can get defragged and hopefully run more efficiently.\n - vacuumed containers means less data over the network during rebases.\n - We can tune to only vacuum when we want (over some threshold).\n - The extra io happens in the eventual consistency engine and by the\n   auditor, which probably makes more sense.\n\nCloses-Bug: #1691648\nChange-Id: Ic731f0d93b3054149db16ffd080683100ad377fd\nSigned-off-by: Matthew Oliver \u003cmatt@oliver.net.au\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/2d9bb059bd9561cadeb596cfffe608df5b626886"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/2d9bb059bd9561cadeb596cfffe608df5b626886"}]},"branch":"refs/heads/master"},"1524719c21e1859a38adddaa89ca671b0d730d21":{"kind":"REWORK","_number":21,"created":"2026-03-18 15:18:47.000000000","uploader":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"ref":"refs/changes/61/916861/21","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/61/916861/21","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/21 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/21 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/21 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/61/916861/21"}}},"commit":{"parents":[{"commit":"ebaad19a07f51b31856473f2783feb8263138bc7","subject":"s3api: add API support for optional bucket inventory","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/ebaad19a07f51b31856473f2783feb8263138bc7"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-11-06 08:05:22.000000000","tz":660},"committer":{"name":"Alistair Coles","email":"alistairncoles@gmail.com","date":"2026-03-18 15:18:13.000000000","tz":0},"subject":"db_auditor: add vacuum support","message":"db_auditor: add vacuum support\n\nAs an SQLite database rows are deleted the file can become more sparse and\nfragmented. When this happens the DB needs to be vacuumed.\nA good indicator of sparsness in the file is the freelist page count.\nWhich is the number of pages that have been freed up (but not used).\nThe higher this number, the more sparse the file is getting. We can\nmontior this number while the db_auditor visits DBs and when it gets high\nenough we can trigger a vacuum.\n\nIn testing on a large root container downstream, a 500+MB sparse DB had:\n\n  $ sqlite3 \u003clarge_root_db\u003e.db \".dbinfo\"\n  ..\n  freelist page count: 569463\n\nOnce vacumed it only took up 13MB and a freelist page count of 0.\nFrom python we can get this freelist page count by:\n\n  cur \u003d conn.execute(\"PRAGMA freelist_count\")\n  cur.fetchone()\n  \u003e\u003e (569463,)\n\nWe can also use PRAGMA\u0027s to get the page_size and total page count,\nusing these we calculate the freepage size (in bytes) and ratio with\nused pages (free page percentage). This allows up to add 2 new\ndb_replicator options:\n\n  - vacuum_threshold_size: The size (in bytes) the freepages need to\n        take up before a vacuum is performed.\n  - vacuum_threshold_percent: The percent of freepages before a vacuum\n        is performed.\n\nThe patch also adds a few more increment metrics:\n - vacuum.success: The number of successful vacuums\n - vacuum.failure: The number of vacuums that failed\n - freelist_size: Incremented when a vacuum is triggered by the\n   freepage size exceeds the `max_freelist_size` given option.\n - freelist_percent: Incremented when a vacuum is triggered by the\n   freepage ratio of freepages to pages exceeds the `max_freelist_percent`\n   given option.\n\nTo enable vacuuming one or both of either `max_free_size` or\n`max_free_percent` is a positive value.\n\nEven without enabling vacuuming the db_auditor will now emit recon stats\nfor the last cycle. These include the values above, but also some\nspecial buckets that ops/SRE can use to see how bloated container and\naccount dbs are in their clusters, here is an example:\n\n  jq .container_freepage_stats /var/cache/swift/container.recon\n  {\n    \"percent\": {\n      \"container.freelist.percent.0-9\": 61298,\n      \"container.freelist.percent.10-19\": 3433,\n      \"container.freelist.percent.20-29\": 5836,\n      \"container.freelist.percent.30-39\": 3254,\n      \"container.freelist.percent.40-49\": 2860,\n      \"container.freelist.percent.50-59\": 2673,\n      \"container.freelist.percent.60-69\": 2785,\n      \"container.freelist.percent.70-79\": 3140,\n      \"container.freelist.percent.80-89\": 6259,\n      \"container.freelist.percent.90-99\": 12327\n    },\n    \"size\": {\n      \"container.freelist.size.0-1MB\": 98857,\n      \"container.freelist.size.2-3MB\": 1624,\n      \"container.freelist.size.4-7MB\": 788,\n      \"container.freelist.size.8-15MB\": 195\n      \"container.freelist.size.16-31MB\": 116,\n      \"container.freelist.size.32-63MB\": 139,\n      \"container.freelist.size.64-127MB\": 106,\n      \"container.freelist.size.128-255MB\": 377,\n      \"container.freelist.size.256-511MB\": 817,\n      \"container.freelist.size.512-1023MB\": 767,\n      \"container.freelist.size.1024-2047MB\": 73,\n      \"container.freelist.size.2048-4095MB\": 6,\n    }\n  }\n\nAs you can see the size buckets go up in powers of 2, but the percent\nbuckets are in 10s. This just limits the amount of buckets.\n\nThese should give us a basic gauge of the bloatiness of the metadata\nlayer in swift.\n\nThe advantages of having the auditor do the vacuum are:\n\n - busy containers can get defragged and hopefully run more efficiently.\n - vacuumed containers means less data over the network during rebases.\n - We can tune to only vacuum when we want (over some threshold).\n - The extra io happens in the eventual consistency engine and by the\n   auditor, which probably makes more sense.\n\nCloses-Bug: #1691648\nChange-Id: Ic731f0d93b3054149db16ffd080683100ad377fd\nSigned-off-by: Matthew Oliver \u003cmatt@oliver.net.au\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/1524719c21e1859a38adddaa89ca671b0d730d21"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/1524719c21e1859a38adddaa89ca671b0d730d21"}]},"branch":"refs/heads/master"},"16e4d278025284a724db27e59185d87016d0d6a0":{"kind":"TRIVIAL_REBASE","_number":22,"created":"2026-03-24 17:58:55.000000000","uploader":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"ref":"refs/changes/61/916861/22","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/61/916861/22","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/22 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/22 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/22 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/61/916861/22"}}},"commit":{"parents":[{"commit":"a00d8ee34d818e90a484c2397635bdbaad466fbd","subject":"s3api: add API support for optional bucket inventory","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/a00d8ee34d818e90a484c2397635bdbaad466fbd"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-11-06 08:05:22.000000000","tz":660},"committer":{"name":"Alistair Coles","email":"alistairncoles@gmail.com","date":"2026-03-24 17:40:02.000000000","tz":0},"subject":"db_auditor: add vacuum support","message":"db_auditor: add vacuum support\n\nAs an SQLite database rows are deleted the file can become more sparse and\nfragmented. When this happens the DB needs to be vacuumed.\nA good indicator of sparsness in the file is the freelist page count.\nWhich is the number of pages that have been freed up (but not used).\nThe higher this number, the more sparse the file is getting. We can\nmontior this number while the db_auditor visits DBs and when it gets high\nenough we can trigger a vacuum.\n\nIn testing on a large root container downstream, a 500+MB sparse DB had:\n\n  $ sqlite3 \u003clarge_root_db\u003e.db \".dbinfo\"\n  ..\n  freelist page count: 569463\n\nOnce vacumed it only took up 13MB and a freelist page count of 0.\nFrom python we can get this freelist page count by:\n\n  cur \u003d conn.execute(\"PRAGMA freelist_count\")\n  cur.fetchone()\n  \u003e\u003e (569463,)\n\nWe can also use PRAGMA\u0027s to get the page_size and total page count,\nusing these we calculate the freepage size (in bytes) and ratio with\nused pages (free page percentage). This allows up to add 2 new\ndb_replicator options:\n\n  - vacuum_threshold_size: The size (in bytes) the freepages need to\n        take up before a vacuum is performed.\n  - vacuum_threshold_percent: The percent of freepages before a vacuum\n        is performed.\n\nThe patch also adds a few more increment metrics:\n - vacuum.success: The number of successful vacuums\n - vacuum.failure: The number of vacuums that failed\n - freelist_size: Incremented when a vacuum is triggered by the\n   freepage size exceeds the `max_freelist_size` given option.\n - freelist_percent: Incremented when a vacuum is triggered by the\n   freepage ratio of freepages to pages exceeds the `max_freelist_percent`\n   given option.\n\nTo enable vacuuming one or both of either `max_free_size` or\n`max_free_percent` is a positive value.\n\nEven without enabling vacuuming the db_auditor will now emit recon stats\nfor the last cycle. These include the values above, but also some\nspecial buckets that ops/SRE can use to see how bloated container and\naccount dbs are in their clusters, here is an example:\n\n  jq .container_freepage_stats /var/cache/swift/container.recon\n  {\n    \"percent\": {\n      \"container.freelist.percent.0-9\": 61298,\n      \"container.freelist.percent.10-19\": 3433,\n      \"container.freelist.percent.20-29\": 5836,\n      \"container.freelist.percent.30-39\": 3254,\n      \"container.freelist.percent.40-49\": 2860,\n      \"container.freelist.percent.50-59\": 2673,\n      \"container.freelist.percent.60-69\": 2785,\n      \"container.freelist.percent.70-79\": 3140,\n      \"container.freelist.percent.80-89\": 6259,\n      \"container.freelist.percent.90-99\": 12327\n    },\n    \"size\": {\n      \"container.freelist.size.0-1MB\": 98857,\n      \"container.freelist.size.2-3MB\": 1624,\n      \"container.freelist.size.4-7MB\": 788,\n      \"container.freelist.size.8-15MB\": 195\n      \"container.freelist.size.16-31MB\": 116,\n      \"container.freelist.size.32-63MB\": 139,\n      \"container.freelist.size.64-127MB\": 106,\n      \"container.freelist.size.128-255MB\": 377,\n      \"container.freelist.size.256-511MB\": 817,\n      \"container.freelist.size.512-1023MB\": 767,\n      \"container.freelist.size.1024-2047MB\": 73,\n      \"container.freelist.size.2048-4095MB\": 6,\n    }\n  }\n\nAs you can see the size buckets go up in powers of 2, but the percent\nbuckets are in 10s. This just limits the amount of buckets.\n\nThese should give us a basic gauge of the bloatiness of the metadata\nlayer in swift.\n\nThe advantages of having the auditor do the vacuum are:\n\n - busy containers can get defragged and hopefully run more efficiently.\n - vacuumed containers means less data over the network during rebases.\n - We can tune to only vacuum when we want (over some threshold).\n - The extra io happens in the eventual consistency engine and by the\n   auditor, which probably makes more sense.\n\nCloses-Bug: #1691648\nChange-Id: Ic731f0d93b3054149db16ffd080683100ad377fd\nSigned-off-by: Matthew Oliver \u003cmatt@oliver.net.au\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/16e4d278025284a724db27e59185d87016d0d6a0"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/16e4d278025284a724db27e59185d87016d0d6a0"}]},"branch":"refs/heads/master"},"384fd6ef77424e951dda14b42d7653f2780cfd2c":{"kind":"TRIVIAL_REBASE","_number":23,"created":"2026-03-25 16:30:13.000000000","uploader":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"ref":"refs/changes/61/916861/23","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/61/916861/23","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/23 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/23 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/23 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/61/916861/23"}}},"commit":{"parents":[{"commit":"1a018e0016c90124e2fa36ec5612b4bf5ce07de7","subject":"s3api: add API support for optional bucket inventory","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/1a018e0016c90124e2fa36ec5612b4bf5ce07de7"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-11-06 08:05:22.000000000","tz":660},"committer":{"name":"Alistair Coles","email":"alistairncoles@gmail.com","date":"2026-03-25 16:24:47.000000000","tz":0},"subject":"db_auditor: add vacuum support","message":"db_auditor: add vacuum support\n\nAs an SQLite database rows are deleted the file can become more sparse and\nfragmented. When this happens the DB needs to be vacuumed.\nA good indicator of sparsness in the file is the freelist page count.\nWhich is the number of pages that have been freed up (but not used).\nThe higher this number, the more sparse the file is getting. We can\nmontior this number while the db_auditor visits DBs and when it gets high\nenough we can trigger a vacuum.\n\nIn testing on a large root container downstream, a 500+MB sparse DB had:\n\n  $ sqlite3 \u003clarge_root_db\u003e.db \".dbinfo\"\n  ..\n  freelist page count: 569463\n\nOnce vacumed it only took up 13MB and a freelist page count of 0.\nFrom python we can get this freelist page count by:\n\n  cur \u003d conn.execute(\"PRAGMA freelist_count\")\n  cur.fetchone()\n  \u003e\u003e (569463,)\n\nWe can also use PRAGMA\u0027s to get the page_size and total page count,\nusing these we calculate the freepage size (in bytes) and ratio with\nused pages (free page percentage). This allows up to add 2 new\ndb_replicator options:\n\n  - vacuum_threshold_size: The size (in bytes) the freepages need to\n        take up before a vacuum is performed.\n  - vacuum_threshold_percent: The percent of freepages before a vacuum\n        is performed.\n\nThe patch also adds a few more increment metrics:\n - vacuum.success: The number of successful vacuums\n - vacuum.failure: The number of vacuums that failed\n - freelist_size: Incremented when a vacuum is triggered by the\n   freepage size exceeds the `max_freelist_size` given option.\n - freelist_percent: Incremented when a vacuum is triggered by the\n   freepage ratio of freepages to pages exceeds the `max_freelist_percent`\n   given option.\n\nTo enable vacuuming one or both of either `max_free_size` or\n`max_free_percent` is a positive value.\n\nEven without enabling vacuuming the db_auditor will now emit recon stats\nfor the last cycle. These include the values above, but also some\nspecial buckets that ops/SRE can use to see how bloated container and\naccount dbs are in their clusters, here is an example:\n\n  jq .container_freepage_stats /var/cache/swift/container.recon\n  {\n    \"percent\": {\n      \"container.freelist.percent.0-9\": 61298,\n      \"container.freelist.percent.10-19\": 3433,\n      \"container.freelist.percent.20-29\": 5836,\n      \"container.freelist.percent.30-39\": 3254,\n      \"container.freelist.percent.40-49\": 2860,\n      \"container.freelist.percent.50-59\": 2673,\n      \"container.freelist.percent.60-69\": 2785,\n      \"container.freelist.percent.70-79\": 3140,\n      \"container.freelist.percent.80-89\": 6259,\n      \"container.freelist.percent.90-99\": 12327\n    },\n    \"size\": {\n      \"container.freelist.size.0-1MB\": 98857,\n      \"container.freelist.size.2-3MB\": 1624,\n      \"container.freelist.size.4-7MB\": 788,\n      \"container.freelist.size.8-15MB\": 195\n      \"container.freelist.size.16-31MB\": 116,\n      \"container.freelist.size.32-63MB\": 139,\n      \"container.freelist.size.64-127MB\": 106,\n      \"container.freelist.size.128-255MB\": 377,\n      \"container.freelist.size.256-511MB\": 817,\n      \"container.freelist.size.512-1023MB\": 767,\n      \"container.freelist.size.1024-2047MB\": 73,\n      \"container.freelist.size.2048-4095MB\": 6,\n    }\n  }\n\nAs you can see the size buckets go up in powers of 2, but the percent\nbuckets are in 10s. This just limits the amount of buckets.\n\nThese should give us a basic gauge of the bloatiness of the metadata\nlayer in swift.\n\nThe advantages of having the auditor do the vacuum are:\n\n - busy containers can get defragged and hopefully run more efficiently.\n - vacuumed containers means less data over the network during rebases.\n - We can tune to only vacuum when we want (over some threshold).\n - The extra io happens in the eventual consistency engine and by the\n   auditor, which probably makes more sense.\n\nCloses-Bug: #1691648\nChange-Id: Ic731f0d93b3054149db16ffd080683100ad377fd\nSigned-off-by: Matthew Oliver \u003cmatt@oliver.net.au\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/384fd6ef77424e951dda14b42d7653f2780cfd2c"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/384fd6ef77424e951dda14b42d7653f2780cfd2c"}]},"branch":"refs/heads/master"},"89381f57c3fade76b286cd602de345bd112273eb":{"kind":"REWORK","_number":24,"created":"2026-05-12 01:53:40.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/61/916861/24","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/61/916861/24","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/24 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/24 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/24 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/61/916861/24"}}},"commit":{"parents":[{"commit":"3bbd002284d76d381d731b543927f70a6c4ee9ca","subject":"s3api: add API support for optional bucket inventory","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/3bbd002284d76d381d731b543927f70a6c4ee9ca"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-11-06 08:05:22.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2026-05-12 01:46:04.000000000","tz":600},"subject":"db_auditor: add vacuum support","message":"db_auditor: add vacuum support\n\nAs an SQLite database rows are deleted the file can become more sparse and\nfragmented. When this happens the DB needs to be vacuumed.\nA good indicator of sparsness in the file is the freelist page count.\nWhich is the number of pages that have been freed up (but not used).\nThe higher this number, the more sparse the file is getting. We can\nmontior this number while the db_auditor visits DBs and when it gets high\nenough we can trigger a vacuum.\n\nIn testing on a large root container downstream, a 500+MB sparse DB had:\n\n  $ sqlite3 \u003clarge_root_db\u003e.db \".dbinfo\"\n  ..\n  freelist page count: 569463\n\nOnce vacumed it only took up 13MB and a freelist page count of 0.\nFrom python we can get this freelist page count by:\n\n  cur \u003d conn.execute(\"PRAGMA freelist_count\")\n  cur.fetchone()\n  \u003e\u003e (569463,)\n\nWe can also use PRAGMA\u0027s to get the page_size and total page count,\nusing these we calculate the freepage size (in bytes) and ratio with\nused pages (free page percentage). This allows up to add 2 new\ndb_replicator options:\n\n  - vacuum_threshold_size: The size (in bytes) the freepages need to\n        take up before a vacuum is performed.\n  - vacuum_threshold_percent: The percent of freepages before a vacuum\n        is performed.\n\nThe patch also adds a few more increment metrics:\n - vacuum.success: The number of successful vacuums\n - vacuum.failure: The number of vacuums that failed\n - freelist_size: Incremented when a vacuum is triggered by the\n   freepage size exceeds the `max_freelist_size` given option.\n - freelist_percent: Incremented when a vacuum is triggered by the\n   freepage ratio of freepages to pages exceeds the `max_freelist_percent`\n   given option.\n\nTo enable vacuuming one or both of either `max_free_size` or\n`max_free_percent` is a positive value.\n\nEven without enabling vacuuming the db_auditor will now emit recon stats\nfor the last cycle. These include the values above, but also some\nspecial buckets that ops/SRE can use to see how bloated container and\naccount dbs are in their clusters, here is an example:\n\n  jq .container_freepage_stats /var/cache/swift/container.recon\n  {\n    \"percent\": {\n      \"container.freelist.percent.0-9\": 61298,\n      \"container.freelist.percent.10-19\": 3433,\n      \"container.freelist.percent.20-29\": 5836,\n      \"container.freelist.percent.30-39\": 3254,\n      \"container.freelist.percent.40-49\": 2860,\n      \"container.freelist.percent.50-59\": 2673,\n      \"container.freelist.percent.60-69\": 2785,\n      \"container.freelist.percent.70-79\": 3140,\n      \"container.freelist.percent.80-89\": 6259,\n      \"container.freelist.percent.90-99\": 12327\n    },\n    \"size\": {\n      \"container.freelist.size.0-1MB\": 98857,\n      \"container.freelist.size.2-3MB\": 1624,\n      \"container.freelist.size.4-7MB\": 788,\n      \"container.freelist.size.8-15MB\": 195\n      \"container.freelist.size.16-31MB\": 116,\n      \"container.freelist.size.32-63MB\": 139,\n      \"container.freelist.size.64-127MB\": 106,\n      \"container.freelist.size.128-255MB\": 377,\n      \"container.freelist.size.256-511MB\": 817,\n      \"container.freelist.size.512-1023MB\": 767,\n      \"container.freelist.size.1024-2047MB\": 73,\n      \"container.freelist.size.2048-4095MB\": 6,\n    }\n  }\n\nAs you can see the size buckets go up in powers of 2, but the percent\nbuckets are in 10s. This just limits the amount of buckets.\n\nThese should give us a basic gauge of the bloatiness of the metadata\nlayer in swift.\n\nThe advantages of having the auditor do the vacuum are:\n\n - busy containers can get defragged and hopefully run more efficiently.\n - vacuumed containers means less data over the network during rebases.\n - We can tune to only vacuum when we want (over some threshold).\n - The extra io happens in the eventual consistency engine and by the\n   auditor, which probably makes more sense.\n\nCloses-Bug: #1691648\nChange-Id: Ic731f0d93b3054149db16ffd080683100ad377fd\nSigned-off-by: Matthew Oliver \u003cmatt@oliver.net.au\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/89381f57c3fade76b286cd602de345bd112273eb"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/89381f57c3fade76b286cd602de345bd112273eb"}]},"branch":"refs/heads/master"},"84377b3fb80231e8a2b56a536f4af0589b803d41":{"kind":"TRIVIAL_REBASE_WITH_MESSAGE_UPDATE","_number":25,"created":"2026-07-22 23:58:01.000000000","uploader":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"ref":"refs/changes/61/916861/25","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/61/916861/25","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/25 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/25 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/25 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/61/916861/25"}}},"commit":{"parents":[{"commit":"869c4d910f761324d2c0626c5c78563f7aba1a26","subject":"s3api: add API support for optional bucket inventory","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/869c4d910f761324d2c0626c5c78563f7aba1a26"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-11-06 08:05:22.000000000","tz":660},"committer":{"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","date":"2026-07-22 23:38:18.000000000","tz":-300},"subject":"db_auditor: add vacuum support","message":"db_auditor: add vacuum support\n\nAs an SQLite database rows are deleted the file can become more sparse\nand fragmented. When this happens the DB needs to be vacuumed.\nA good indicator of sparsness in the file is the freelist page count.\nWhich is the number of pages that have been freed up (but not used).\nThe higher this number, the more sparse the file is getting. We can\nmontior this number while the db_auditor visits DBs and when it gets\nhigh enough we can trigger a vacuum.\n\nIn testing on a large root container downstream, a 500+MB sparse DB had:\n\n  $ sqlite3 \u003clarge_root_db\u003e.db \".dbinfo\"\n  ..\n  freelist page count: 569463\n\nOnce vacumed it only took up 13MB and a freelist page count of 0.\nFrom python we can get this freelist page count by:\n\n  cur \u003d conn.execute(\"PRAGMA freelist_count\")\n  cur.fetchone()\n  \u003e\u003e (569463,)\n\nWe can also use PRAGMA\u0027s to get the page_size and total page count,\nusing these we calculate the freepage size (in bytes) and ratio with\nused pages (free page percentage). This allows up to add 2 new\ndb_replicator options:\n\n  - vacuum_threshold_size: The size (in bytes) the freepages need to\n        take up before a vacuum is performed.\n  - vacuum_threshold_percent: The percent of freepages before a vacuum\n        is performed.\n\nThe patch also adds a few more increment metrics:\n - vacuum.success: The number of successful vacuums\n - vacuum.failure: The number of vacuums that failed\n - freelist_size: Incremented when a vacuum is triggered by the\n   freepage size exceeds the `max_freelist_size` given option.\n - freelist_percent: Incremented when a vacuum is triggered by the\n   freepage ratio of freepages to pages exceeds the\n   `max_freelist_percent` given option.\n\nTo enable vacuuming one or both of either `max_free_size` or\n`max_free_percent` is a positive value.\n\nEven without enabling vacuuming the db_auditor will now emit recon stats\nfor the last cycle. These include the values above, but also some\nspecial buckets that ops/SRE can use to see how bloated container and\naccount dbs are in their clusters, here is an example:\n\n  jq .container_freepage_stats /var/cache/swift/container.recon\n  {\n    \"percent\": {\n      \"container.freelist.percent.0-9\": 61298,\n      \"container.freelist.percent.10-19\": 3433,\n      \"container.freelist.percent.20-29\": 5836,\n      \"container.freelist.percent.30-39\": 3254,\n      \"container.freelist.percent.40-49\": 2860,\n      \"container.freelist.percent.50-59\": 2673,\n      \"container.freelist.percent.60-69\": 2785,\n      \"container.freelist.percent.70-79\": 3140,\n      \"container.freelist.percent.80-89\": 6259,\n      \"container.freelist.percent.90-99\": 12327\n    },\n    \"size\": {\n      \"container.freelist.size.0-1MB\": 98857,\n      \"container.freelist.size.2-3MB\": 1624,\n      \"container.freelist.size.4-7MB\": 788,\n      \"container.freelist.size.8-15MB\": 195\n      \"container.freelist.size.16-31MB\": 116,\n      \"container.freelist.size.32-63MB\": 139,\n      \"container.freelist.size.64-127MB\": 106,\n      \"container.freelist.size.128-255MB\": 377,\n      \"container.freelist.size.256-511MB\": 817,\n      \"container.freelist.size.512-1023MB\": 767,\n      \"container.freelist.size.1024-2047MB\": 73,\n      \"container.freelist.size.2048-4095MB\": 6,\n    }\n  }\n\nAs you can see the size buckets go up in powers of 2, but the percent\nbuckets are in 10s. This just limits the amount of buckets.\n\nThese should give us a basic gauge of the bloatiness of the metadata\nlayer in swift.\n\nThe advantages of having the auditor do the vacuum are:\n\n - busy containers can get defragged and hopefully run more efficiently.\n - vacuumed containers means less data over the network during rebases.\n - We can tune to only vacuum when we want (over some threshold).\n - The extra io happens in the eventual consistency engine and by the\n   auditor, which probably makes more sense.\n\nCloses-Bug: #1691648\nChange-Id: Ic731f0d93b3054149db16ffd080683100ad377fd\nSigned-off-by: Matthew Oliver \u003cmatt@oliver.net.au\u003e\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/84377b3fb80231e8a2b56a536f4af0589b803d41"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/84377b3fb80231e8a2b56a536f4af0589b803d41"}]},"branch":"refs/heads/master"},"fbd872bed40196529d826f4210e56590021a2f91":{"kind":"REWORK","_number":26,"created":"2026-07-23 06:56:01.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/61/916861/26","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/61/916861/26","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/26 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/26 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/26 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/61/916861/26"}}},"commit":{"parents":[{"commit":"869c4d910f761324d2c0626c5c78563f7aba1a26","subject":"s3api: add API support for optional bucket inventory","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/869c4d910f761324d2c0626c5c78563f7aba1a26"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-11-06 08:05:22.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2026-07-23 06:55:44.000000000","tz":600},"subject":"db_auditor: add vacuum support","message":"db_auditor: add vacuum support\n\nAs an SQLite database rows are deleted the file can become more sparse\nand fragmented. When this happens the DB needs to be vacuumed.\nA good indicator of sparsness in the file is the freelist page count.\nWhich is the number of pages that have been freed up (but not used).\nThe higher this number, the more sparse the file is getting. We can\nmontior this number while the db_auditor visits DBs and when it gets\nhigh enough we can trigger a vacuum.\n\nIn testing on a large root container downstream, a 500+MB sparse DB had:\n\n  $ sqlite3 \u003clarge_root_db\u003e.db \".dbinfo\"\n  ..\n  freelist page count: 569463\n\nOnce vacumed it only took up 13MB and a freelist page count of 0.\nFrom python we can get this freelist page count by:\n\n  cur \u003d conn.execute(\"PRAGMA freelist_count\")\n  cur.fetchone()\n  \u003e\u003e (569463,)\n\nWe can also use PRAGMA\u0027s to get the page_size and total page count,\nusing these we calculate the freepage size (in bytes) and ratio with\nused pages (free page percentage). This allows up to add 2 new\ndb_replicator options:\n\n  - vacuum_threshold_size: The size (in bytes) the freepages need to\n        take up before a vacuum is performed.\n  - vacuum_threshold_percent: The percent of freepages before a vacuum\n        is performed.\n\nThe patch also adds a few more increment metrics:\n - vacuum.success: The number of successful vacuums\n - vacuum.failure: The number of vacuums that failed\n - freelist_size: Incremented when a vacuum is triggered by the\n   freepage size exceeds the `max_freelist_size` given option.\n - freelist_percent: Incremented when a vacuum is triggered by the\n   freepage ratio of freepages to pages exceeds the\n   `max_freelist_percent` given option.\n\nTo enable vacuuming one or both of either `max_free_size` or\n`max_free_percent` is a positive value.\n\nEven without enabling vacuuming the db_auditor will now emit recon stats\nfor the last cycle. These include the values above, but also some\nspecial buckets that ops/SRE can use to see how bloated container and\naccount dbs are in their clusters, here is an example:\n\n  jq .container_freepage_stats /var/cache/swift/container.recon\n  {\n    \"percent\": {\n      \"container.freelist.percent.0-9\": 61298,\n      \"container.freelist.percent.10-19\": 3433,\n      \"container.freelist.percent.20-29\": 5836,\n      \"container.freelist.percent.30-39\": 3254,\n      \"container.freelist.percent.40-49\": 2860,\n      \"container.freelist.percent.50-59\": 2673,\n      \"container.freelist.percent.60-69\": 2785,\n      \"container.freelist.percent.70-79\": 3140,\n      \"container.freelist.percent.80-89\": 6259,\n      \"container.freelist.percent.90-99\": 12327\n    },\n    \"size\": {\n      \"container.freelist.size.0-1MB\": 98857,\n      \"container.freelist.size.2-3MB\": 1624,\n      \"container.freelist.size.4-7MB\": 788,\n      \"container.freelist.size.8-15MB\": 195\n      \"container.freelist.size.16-31MB\": 116,\n      \"container.freelist.size.32-63MB\": 139,\n      \"container.freelist.size.64-127MB\": 106,\n      \"container.freelist.size.128-255MB\": 377,\n      \"container.freelist.size.256-511MB\": 817,\n      \"container.freelist.size.512-1023MB\": 767,\n      \"container.freelist.size.1024-2047MB\": 73,\n      \"container.freelist.size.2048-4095MB\": 6,\n    }\n  }\n\nAs you can see the size buckets go up in powers of 2, but the percent\nbuckets are in 10s. This just limits the amount of buckets.\n\nThese should give us a basic gauge of the bloatiness of the metadata\nlayer in swift.\n\nThe advantages of having the auditor do the vacuum are:\n\n - busy containers can get defragged and hopefully run more efficiently.\n - vacuumed containers means less data over the network during rebases.\n - We can tune to only vacuum when we want (over some threshold).\n - The extra io happens in the eventual consistency engine and by the\n   auditor, which probably makes more sense.\n\nCloses-Bug: #1691648\nChange-Id: Ic731f0d93b3054149db16ffd080683100ad377fd\nSigned-off-by: Matthew Oliver \u003cmatt@oliver.net.au\u003e\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/fbd872bed40196529d826f4210e56590021a2f91"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/fbd872bed40196529d826f4210e56590021a2f91"}]},"branch":"refs/heads/master"},"f9b1ce1dc7a22fcc4b9384c221f4fb284f41eac4":{"kind":"REWORK","_number":27,"created":"2026-07-23 10:27:09.000000000","uploader":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"ref":"refs/changes/61/916861/27","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/61/916861/27","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/27 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/27 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/61/916861/27 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/61/916861/27"}}},"commit":{"parents":[{"commit":"b234d460c7a86b49e3a750179c012b911693f1a1","subject":"s3api: add API support for optional bucket inventory","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/b234d460c7a86b49e3a750179c012b911693f1a1"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2024-11-06 08:05:22.000000000","tz":660},"committer":{"name":"Alistair Coles","email":"alistairncoles@gmail.com","date":"2026-07-23 10:25:41.000000000","tz":60},"subject":"db_auditor: add vacuum support","message":"db_auditor: add vacuum support\n\nAs an SQLite database rows are deleted the file can become more sparse\nand fragmented. When this happens the DB needs to be vacuumed.\nA good indicator of sparsness in the file is the freelist page count.\nWhich is the number of pages that have been freed up (but not used).\nThe higher this number, the more sparse the file is getting. We can\nmontior this number while the db_auditor visits DBs and when it gets\nhigh enough we can trigger a vacuum.\n\nIn testing on a large root container downstream, a 500+MB sparse DB had:\n\n  $ sqlite3 \u003clarge_root_db\u003e.db \".dbinfo\"\n  ..\n  freelist page count: 569463\n\nOnce vacumed it only took up 13MB and a freelist page count of 0.\nFrom python we can get this freelist page count by:\n\n  cur \u003d conn.execute(\"PRAGMA freelist_count\")\n  cur.fetchone()\n  \u003e\u003e (569463,)\n\nWe can also use PRAGMA\u0027s to get the page_size and total page count,\nusing these we calculate the freepage size (in bytes) and ratio with\nused pages (free page percentage). This allows up to add 2 new\ndb_replicator options:\n\n  - vacuum_threshold_size: The size (in bytes) the freepages need to\n        take up before a vacuum is performed.\n  - vacuum_threshold_percent: The percent of freepages before a vacuum\n        is performed.\n\nThe patch also adds a few more increment metrics:\n - vacuum.success: The number of successful vacuums\n - vacuum.failure: The number of vacuums that failed\n - freelist_size: Incremented when a vacuum is triggered by the\n   freepage size exceeds the `max_freelist_size` given option.\n - freelist_percent: Incremented when a vacuum is triggered by the\n   freepage ratio of freepages to pages exceeds the\n   `max_freelist_percent` given option.\n\nTo enable vacuuming one or both of either `max_free_size` or\n`max_free_percent` is a positive value.\n\nEven without enabling vacuuming the db_auditor will now emit recon stats\nfor the last cycle. These include the values above, but also some\nspecial buckets that ops/SRE can use to see how bloated container and\naccount dbs are in their clusters, here is an example:\n\n  jq .container_freepage_stats /var/cache/swift/container.recon\n  {\n    \"percent\": {\n      \"container.freelist.percent.0-9\": 61298,\n      \"container.freelist.percent.10-19\": 3433,\n      \"container.freelist.percent.20-29\": 5836,\n      \"container.freelist.percent.30-39\": 3254,\n      \"container.freelist.percent.40-49\": 2860,\n      \"container.freelist.percent.50-59\": 2673,\n      \"container.freelist.percent.60-69\": 2785,\n      \"container.freelist.percent.70-79\": 3140,\n      \"container.freelist.percent.80-89\": 6259,\n      \"container.freelist.percent.90-99\": 12327\n    },\n    \"size\": {\n      \"container.freelist.size.0-1MB\": 98857,\n      \"container.freelist.size.2-3MB\": 1624,\n      \"container.freelist.size.4-7MB\": 788,\n      \"container.freelist.size.8-15MB\": 195\n      \"container.freelist.size.16-31MB\": 116,\n      \"container.freelist.size.32-63MB\": 139,\n      \"container.freelist.size.64-127MB\": 106,\n      \"container.freelist.size.128-255MB\": 377,\n      \"container.freelist.size.256-511MB\": 817,\n      \"container.freelist.size.512-1023MB\": 767,\n      \"container.freelist.size.1024-2047MB\": 73,\n      \"container.freelist.size.2048-4095MB\": 6,\n    }\n  }\n\nAs you can see the size buckets go up in powers of 2, but the percent\nbuckets are in 10s. This just limits the amount of buckets.\n\nThese should give us a basic gauge of the bloatiness of the metadata\nlayer in swift.\n\nThe advantages of having the auditor do the vacuum are:\n\n - busy containers can get defragged and hopefully run more efficiently.\n - vacuumed containers means less data over the network during rebases.\n - We can tune to only vacuum when we want (over some threshold).\n - The extra io happens in the eventual consistency engine and by the\n   auditor, which probably makes more sense.\n\nCloses-Bug: #1691648\nChange-Id: Ic731f0d93b3054149db16ffd080683100ad377fd\nSigned-off-by: Matthew Oliver \u003cmatt@oliver.net.au\u003e\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/f9b1ce1dc7a22fcc4b9384c221f4fb284f41eac4"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/f9b1ce1dc7a22fcc4b9384c221f4fb284f41eac4"}]},"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","applied_by":{"_account_id":38496,"name":"Andressa Cabistani","display_name":"Andressa","email":"acabistani@gmail.com","username":"andressadotpy","status":"I\u0027m a Software Engineer at Red Hat and I love Open Source and connect with people! Feel free to DM through IRC, I\u0027ll be delighted to chat"}},{"label":"Workflow","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Verified\u003dMAX","label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Code-Review\u003dMAX","label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Workflow\u003dMAX","label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
