)]}'
{"id":"openstack%2Fswift~1006136","triplet_id":"openstack%2Fswift~master~I77e9716c935fd5dfbff06c03ad6d808d6ece1eae","project":"openstack/swift","branch":"master","attention_set":{"7233":{"account":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"last_update":"2026-09-18 04:02:24.000000000","reason":"A robot voted negatively on a label"}},"removed_from_attention_set":{},"hashtags":[],"change_id":"I77e9716c935fd5dfbff06c03ad6d808d6ece1eae","subject":"sq: sharding: only use empty shard optimisation on deep handoffs","status":"NEW","created":"2026-09-18 02:07:06.000000000","updated":"2026-09-18 07:35:39.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":true,"submittable":false,"total_comment_count":3,"unresolved_comment_count":2,"has_review_started":true,"meta_rev_id":"f487191f7189744981460cb389e4a90850087422","_number":1006136,"virtual_id_number":1006136,"owner":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"actions":{},"labels":{"Verified":{"disliked":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:check","value":-1,"date":"2026-09-18 04:02:24.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","value":-1,"default_value":0,"optional":true},"Code-Review":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"all":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-09-18 03:54:14.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":"2026-09-18 04:02:24.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"}],"messages":[{"id":"fe02b968aecae75ab3e7c7beddf8e6a0db5d77a9","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2026-09-18 02:07:06.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"6a380e24bfdf0aa800b4d9aadb5b37a13262fb16","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2026-09-18 02:11:12.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"c6ba2f0f86463bc40c4825cd4971fb6c49f52fdc","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2026-09-18 02:13:22.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"610b64eb6315d397c9967dac627736805b0d430e","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-18 03:54:14.000000000","message":"Patch Set 1:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/adeff51eef694d75af7791ea0f826b22\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/6cca6169669d4a05bd01a04f2e8d5417 : SUCCESS in 1h 02m 27s","accounts_in_message":[],"_revision_number":1},{"id":"06d9558f0d17a8130c7fb2647cc7571156844581","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-18 04:02:24.000000000","message":"Patch Set 1: 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/544b8c07c7c64157801461c913b1a586\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/45eaaedbe86c4c009b9ea9368c330f11 : SUCCESS in 9m 27s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/f113517648e34ee0a67c02a934c7dc05 : SUCCESS in 4m 27s\n- grenade https://zuul.opendev.org/t/openstack/build/049278ed568e45fc95bc55ce25a503af : SUCCESS in 1h 04m 59s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/0ac97cb58ffc401ea89ed3706793213f : SUCCESS in 1h 03m 09s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/39c90d23dc83495a9a2767734032f7d7 : SUCCESS in 57m 03s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/e1346d94c1ad41c9847409cb6f6cade1 : SUCCESS in 53m 55s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/d2e872a3f4a7491bb724857ca7f1f7d4 : SUCCESS in 23m 23s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/904dfefa7148414d8888dc61dd7dce11 : SUCCESS in 19m 40s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/dae67b7298f24e96945cd023cb506dc9 : SUCCESS in 20m 38s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/bdcfd37ce0434b549f49f80a16ce60a3 : SUCCESS in 6m 09s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/2b75aa86c6a34a728a595cd93db7ac40 : SUCCESS in 19m 42s\n- swift-tox-py310 https://zuul.opendev.org/t/openstack/build/417f14e4e5cc4802b0cf8a1ace75af1c : SUCCESS in 22m 58s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/c1b82ae1aa0644e78befd4e33ac5614b : SUCCESS in 30m 56s\n- swift-tox-py314 https://zuul.opendev.org/t/openstack/build/3b3a611a68744eedbafd5ba1fa18d28f : SUCCESS in 19m 26s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/25b3a61ab53f4198b6cb783077b01c70 : SUCCESS in 14m 52s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/22e192a18ac646ada6b5dfdcf668713d : SUCCESS in 14m 14s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/69834bfd5ea243cc9da80ad93b3f2640 : SUCCESS in 17m 44s\n- swift-tox-func-py39-centos-9-stream https://zuul.opendev.org/t/openstack/build/7f9d225311de42d69f075b3c96b99a76 : SUCCESS in 17m 52s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/03248181138c46f3a14c9cae8a5e5ee1 : SUCCESS in 7m 56s\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/688869d84ba3477abf83fc0e48f18d28 : SUCCESS in 10m 07s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/4c33446f064b4db9b0acf21220de09ad : FAILURE in 1h 04m 19s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/993f36577cf74bb7846615024ddc2418 : SUCCESS in 54m 19s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/24fdf76fa3e04ae09ba0240104ffc2e9 : SUCCESS in 54m 50s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/f923d146e4d04b5b9fd2092fe160b49f : SUCCESS in 12m 06s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/5616b09370874e2d82ae170559adc9d0 : SUCCESS in 4m 19s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/d6d970979bd74e6fbbc0ac873252e25e : SUCCESS in 13m 58s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/21cb01497fc948b89aece725c8662a54 : SUCCESS in 56m 22s\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-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-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":1},{"id":"f487191f7189744981460cb389e4a90850087422","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2026-09-18 07:35:39.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"8279108240cc73aaf7a1326e02f6f2ac2b1500ad","revisions":{"8279108240cc73aaf7a1326e02f6f2ac2b1500ad":{"kind":"REWORK","_number":1,"created":"2026-09-18 02:07:06.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/36/1006136/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/36/1006136/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/36/1006136/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/36/1006136/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/36/1006136/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/36/1006136/1"}}},"commit":{"parents":[{"commit":"ed584689a9a0d0093f0b51ee49506f2b9aa43a0b","subject":"sq: test cleave cleanup after concurrent updates","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/ed584689a9a0d0093f0b51ee49506f2b9aa43a0b"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2026-09-18 01:51:10.000000000","tz":600},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2026-09-18 01:51:10.000000000","tz":600},"subject":"sq: sharding: only use empty shard optimisation on deep handoffs","message":"sq: sharding: only use empty shard optimisation on deep handoffs\n\nWe reply on `find_local_handoff_for_part` to find a local handoff device\nto place a shard broker onto while we move data. But this\n\"local_handoff\" could also be the local primary for the partition if it\nis suppose to live on this node.\n\nFurther, when a shard cleaves a range but the range is empty, counting\nit as a batcded cleave or going to the effort of calling replicate on it\ncan be expensive. Esp in regards to small handoffs whose primariys are\nin the sharded or sharding state. They can\u0027t just replicate they need to\nshard themselves away.. if there are alot of shards but only few rows\nthen there is a lot of effort required to shard and replicate only a few\nobj rows.\nThis is where an opimisation was added, if the cleaved handoff shard was\nstill empty and we\u0027re the ones who iniitalised it, then just delete\nthe empty cleaved handoff and continue processing.\n\nHowever, if the cleaved handoff shard is actually in fact a primary, or\neven in the handoff range, then there is a chance that a PUT might come\nin an update the broker (because there is potential for obj updates to\nbe routed to them), and we still see them as empty (as we don\u0027t recheck)\nand delete.\n\nThis patch changes `find_local_handoff_for_part` to also return a\nhandoff type:\n\n  HANDOFF_PRIMARY - It\u0027s actually a primary device for the partition.\n  HANDOFF_HANDOFF - It\u0027s in the first replica_count items deep into\n                    handoffs, so possily routable.\n  HANDOFF_DEEP    - The device lives \u003e replica_count into the handoffs\n                    and safely out of routing range.\n\nThe sharder can then use this extra bit on info and only delete an empty\nself initialised shard if it\u0027s a deep handoff where it\u0027s deep enough to\nsay it isn\u0027t routable.\n\nChange-Id: I77e9716c935fd5dfbff06c03ad6d808d6ece1eae\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/8279108240cc73aaf7a1326e02f6f2ac2b1500ad"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/8279108240cc73aaf7a1326e02f6f2ac2b1500ad"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"OK","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY"},{"label":"Workflow","status":"MAY"}]}],"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":""}}}]}
