)]}'
{"id":"openstack%2Fnova~1005115","triplet_id":"openstack%2Fnova~stable%2F2026.1~I36163947a09b82cfc40ab4b522d82ffb503a0b84","project":"openstack/nova","branch":"stable/2026.1","attention_set":{"14228":{"account":{"_account_id":14228,"name":"Clif Houck","email":"me@clifhouck.com","username":"clif_h"},"last_update":"2026-09-14 17:06:32.000000000","reason":"A robot voted negatively on a label"}},"removed_from_attention_set":{},"hashtags":[],"change_id":"I36163947a09b82cfc40ab4b522d82ffb503a0b84","subject":"Parallelize per-node resource updates","status":"NEW","created":"2026-09-10 19:45:47.000000000","updated":"2026-09-14 17:06:32.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":true,"submittable":false,"total_comment_count":1,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"8a1eb3d3f685f8a18b062b107941a5eb42786d89","_number":1005115,"virtual_id_number":1005115,"owner":{"_account_id":14228,"name":"Clif Houck","email":"me@clifhouck.com","username":"clif_h"},"actions":{},"labels":{"Verified":{"disliked":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:check","value":-1,"date":"2026-09-10 21:55:52.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},"Review-Priority":{"all":[{"value":0,"permitted_voting_range":{"min":0,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{" 0":"Default Priority","+1":"Contributor Review Promise","+2":"Core Review Promise"},"default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"CC":[{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]}],"REVIEWER":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-09-10 19:45:47.000000000","updated_by":{"_account_id":14228,"name":"Clif Houck","email":"me@clifhouck.com","username":"clif_h"},"reviewer":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"state":"CC"},{"updated":"2026-09-10 20:39:28.000000000","updated_by":{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]},"reviewer":{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]},"state":"CC"},{"updated":"2026-09-10 21:55:52.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":"5225ed661987a2841d8f202e3534b6ddad24a298","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":14228,"name":"Clif Houck","email":"me@clifhouck.com","username":"clif_h"},"date":"2026-09-10 19:45:47.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"855ec355df96b1896600fd34988c2086ab405afb","author":{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]},"date":"2026-09-10 20:39:28.000000000","message":"Patch Set 1:\n\nBuild Successful \n\n* quobyteci:  nova_quobyteci : SUCCESS, logs at: https://oscilogs.quobyte.com/logs/I36163947a09b82cfc40ab4b522d82ffb503a0b84 .","accounts_in_message":[],"_revision_number":1},{"id":"273562626d4b538bdf907e970884cf805d38ea7d","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-10 21:55:52.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/e7809a54ef9a407da758a67ce7651a43\n\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/86886757cad34c0982798074f01dd115 : SUCCESS in 1h 03m 56s\n- tempest-integrated-compute https://zuul.opendev.org/t/openstack/build/2ceb3bdc53724911899cba9bd41316a1 : SUCCESS in 1h 52m 06s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/da0932d588e44062834a9c659695f7fe : SUCCESS in 36m 35s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/753b6b4c5da2465b9f7bd234f46e0834 : TIMED_OUT in 1h 42m 06s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/027338b0eeea44938ffb264fb11abb75 : SUCCESS in 6m 10s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/da91784c06e6447f8dda91feea4b7a05 : SUCCESS in 20m 11s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/a50621a70a134fb5a1d04abf8345677d : SUCCESS in 8m 24s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/a36b2183bb034b2abc84cdf279198326 : FAILURE in 10m 20s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/0baade9387154915b7fd0e454c83b20c : SUCCESS in 13m 14s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/44a6553b6a9248628d05dec28b2d34ce : SUCCESS in 9m 22s\n- ironic-tempest-bios-ipmi-autodetect https://zuul.opendev.org/t/openstack/build/a69da4f6d91b4d92815d3848ea3809d0 : SUCCESS in 1h 05m 58s (non-voting)\n- nova-ceph-multistore https://zuul.opendev.org/t/openstack/build/0868b21b65084a8bb4b0f15bd3d86562 : SUCCESS in 1h 47m 03s\n- nova-live-migration https://zuul.opendev.org/t/openstack/build/247a646f2add4f2a93df9685f2e4d9e5 : SUCCESS in 59m 39s\n- nova-graceful-shutdown https://zuul.opendev.org/t/openstack/build/8e86a811dd4a4f7eaa635f08ed045177 : SUCCESS in 1h 06m 34s\n- nova-live-migration-ceph https://zuul.opendev.org/t/openstack/build/2c04a854a8c24a03b1f628ab16e59b49 : SUCCESS in 50m 14s\n- nova-multi-cell https://zuul.opendev.org/t/openstack/build/3af057faa6d6474a95eec6d21fca640b : SUCCESS in 1h 05m 02s\n- nova-next https://zuul.opendev.org/t/openstack/build/50a6da8921a74c8db010952ebaab85da : SUCCESS in 2h 06m 07s\n- nova-alt-configurations https://zuul.opendev.org/t/openstack/build/1b2b4b2b0a6c4544beab8a11b169c41d : SUCCESS in 37m 30s\n- nova-tox-validate-backport https://zuul.opendev.org/t/openstack/build/8bb2f38f0d424b10a6473f2eb7662e68 : SUCCESS in 5m 19s (non-voting)\n- nova-tox-functional-py310 https://zuul.opendev.org/t/openstack/build/738e21cb61c74eabbdda3003b3f3b58e : TIMED_OUT in 1h 01m 16s\n- nova-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/f1d5b4c4899c45478ba1c4e0ae8f0aad : SUCCESS in 24m 52s\n- nova-grenade-multinode https://zuul.opendev.org/t/openstack/build/a9cc538ca8b6422688adef598fa6e6b5 : SUCCESS in 1h 01m 34s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/ec4086edfc854a70902d5036c94c5381 : SUCCESS in 43m 12s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/a28d4b6202344ad49a75abf7250a5f93 : SUCCESS in 17m 15s (non-voting)\n- barbican-tempest-plugin-simple-crypto https://zuul.opendev.org/t/openstack/build/c5f337a2628b40bd8d182d132f496403 : SUCCESS in 31m 30s (non-voting)\n- nova-tox-py312-threading https://zuul.opendev.org/t/openstack/build/9c7100d817f948bfa78085bd41804089 : SUCCESS in 16m 46s","accounts_in_message":[],"_revision_number":1},{"id":"d506968320ebff1ad78e7824b3eb88f4d27d176a","author":{"_account_id":14228,"name":"Clif Houck","email":"me@clifhouck.com","username":"clif_h"},"date":"2026-09-14 15:04:55.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"8a1eb3d3f685f8a18b062b107941a5eb42786d89","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-14 17:06:32.000000000","message":"Patch Set 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/afcb81cbcd524aaab181cde51e211e20\n\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/8840e0d64efa4d6f8d3cec9fbb2be4f8 : SUCCESS in 1h 09m 19s\n- tempest-integrated-compute https://zuul.opendev.org/t/openstack/build/62d0578b90dc4d159d32ffa6d90d88e3 : SUCCESS in 1h 15m 17s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/49b4b5b54889405b97ca21ef7b49c06e : SUCCESS in 37m 40s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/da36cc5b2e7a4d688e12ca722327ae31 : TIMED_OUT in 1h 41m 48s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/30ea5a2adec540e3a53f2ad4b02508c7 : SUCCESS in 4m 59s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/2fc9755c01174007b11ed02f13cc1cfb : SUCCESS in 17m 46s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/b18223307de04aa98c01e4bfd0bd10dd : SUCCESS in 13m 02s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/e593f905e87c4946adcefa103bf5a207 : FAILURE in 11m 06s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/c8c19a29047c47a293a8d32eb6359a07 : SUCCESS in 12m 56s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/5cf9b51d34d0490bb47b63fd727a984b : SUCCESS in 9m 32s\n- ironic-tempest-bios-ipmi-autodetect https://zuul.opendev.org/t/openstack/build/42e6d2f68d3841ad8246ad5b2e788bf9 : SUCCESS in 36m 59s (non-voting)\n- nova-ceph-multistore https://zuul.opendev.org/t/openstack/build/25613db51f3c448287c886d31f5d978c : SUCCESS in 1h 51m 57s\n- nova-live-migration https://zuul.opendev.org/t/openstack/build/1fea134c7a8b47fea1018f8114e70d0e : SUCCESS in 1h 04m 03s\n- nova-graceful-shutdown https://zuul.opendev.org/t/openstack/build/1b6137c67b1c4c85ae0c23f2e460c53d : SUCCESS in 1h 05m 17s\n- nova-live-migration-ceph https://zuul.opendev.org/t/openstack/build/3ebc415c0e2449b7abcae76ea6568952 : SUCCESS in 35m 30s\n- nova-multi-cell https://zuul.opendev.org/t/openstack/build/fba891406479412188a66af6173c2a65 : SUCCESS in 1h 29m 10s\n- nova-next https://zuul.opendev.org/t/openstack/build/6894e902910e4940bd64b03079aeb17e : SUCCESS in 1h 58m 00s\n- nova-alt-configurations https://zuul.opendev.org/t/openstack/build/ede5259b630d4a98a9a14d59acf32666 : SUCCESS in 57m 10s\n- nova-tox-validate-backport https://zuul.opendev.org/t/openstack/build/a4b705deb43d4d24a44194e82ef45571 : SUCCESS in 5m 23s (non-voting)\n- nova-tox-functional-py310 https://zuul.opendev.org/t/openstack/build/eeb284a499cb403f8fc876599fc043ea : SUCCESS in 31m 34s\n- nova-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/0c1dce507af24cb981189edcf19cdc1d : TIMED_OUT in 1h 01m 09s\n- nova-grenade-multinode https://zuul.opendev.org/t/openstack/build/b5451732a3f7482ab48e95dcb49e2b69 : SUCCESS in 1h 25m 13s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/bca5158c4d914d978c3781df8873038b : SUCCESS in 1h 01m 52s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/a7e4fd80bfc24d969478b34b5f155b43 : SUCCESS in 20m 03s (non-voting)\n- barbican-tempest-plugin-simple-crypto https://zuul.opendev.org/t/openstack/build/968b78efa10345e6ac79d8d18ec109c3 : SUCCESS in 39m 22s (non-voting)\n- nova-tox-py312-threading https://zuul.opendev.org/t/openstack/build/83acb040b58547cca753ed3826a70c89 : SUCCESS in 17m 13s","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"caa28ac71b9407360950215c471da77c8c7ee323","revisions":{"caa28ac71b9407360950215c471da77c8c7ee323":{"kind":"REWORK","_number":1,"created":"2026-09-10 19:45:47.000000000","uploader":{"_account_id":14228,"name":"Clif Houck","email":"me@clifhouck.com","username":"clif_h"},"ref":"refs/changes/15/1005115/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/15/1005115/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/15/1005115/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/15/1005115/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/15/1005115/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/15/1005115/1"}}},"commit":{"parents":[{"commit":"60229246a872d849c2fe6a47e666324a23622b65","subject":"perf(ironic): eliminate O(N²) ProviderTree deepcopy at startup","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/60229246a872d849c2fe6a47e666324a23622b65"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-03-16 00:19:10.000000000","tz":0},"committer":{"name":"Clif Houck","email":"me@clifhouck.com","date":"2026-09-10 19:39:48.000000000","tz":-300},"subject":"Parallelize per-node resource updates","message":"Parallelize per-node resource updates\n\nThe update_available_resource periodic task updates every node managed\nby a compute service serially. This is acceptable for drivers that\nmanage one or a small number of nodes, but it can make nova-compute\nstartup and periodic resource reporting take many minutes for large\nIronic deployments where a single compute service can manage\nhundreds or thousands of bare metal nodes.\n\nAdd [compute] update_resources_max_workers, defaulting to 1, to let\noperators fan out per-node updates through the compute service\nexecutor. The default keeps the previous sequential behavior.\nLarger values allow Ironic deployments to trade additional\nnova-compute CPU usage and Placement API concurrency for lower\nwall-clock update latency.\n\nThe parallel path drains every scheduled future before returning. If\none or more per-node updates fail, the first exception is re-raised\nafter all futures are drained so startup-fatal errors keep the same\nsemantics as the sequential path.\n\nDocument the Ironic tuning guidance and add a release note that\nframes the startup and resource-reporting improvements in this\nseries as performance bug fixes for large Ironic deployments.\n\nNOTE: This patch had to be slightly re-worked for back-porting: namely\nthread_pool_factory does not exist, so the previous method of using\nnova.utils.{executor,spawn_on,etc} is used.\n\nRelated-Bug: 2162924\nGenerated-By: Cursor sonnet 4.6\nChange-Id: I36163947a09b82cfc40ab4b522d82ffb503a0b84\nSigned-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e\nSigned-off-by: Clif Houck \u003cme@clifhouck.com\u003e\n(cherry picked from commit 65394c320127470660b933425990ccabfed487e5)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/caa28ac71b9407360950215c471da77c8c7ee323"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/caa28ac71b9407360950215c471da77c8c7ee323"}]},"branch":"refs/heads/stable/2026.1"}},"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"},{"label":"Review-Priority","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":"Review-Priority","description":"Review Priority","status":"NOT_APPLICABLE","is_legacy":false,"applicability_expression_result":{"fulfilled":false,"status":"FAIL"},"submittability_expression_result":{"expression":"is:true","fulfilled":true,"status":"NOT_EVALUATED","passing_atoms":[],"failing_atoms":[],"atom_explanations":{}}},{"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":""}}}]}
