)]}'
{"id":"openstack%2Fnova~980677","triplet_id":"openstack%2Fnova~master~I2d9cb097ecfeaf0b2153977c25dec5dc17f0274a","project":"openstack/nova","branch":"master","topic":"startup-time","attention_set":{},"removed_from_attention_set":{"11604":{"account":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"last_update":"2026-03-16 16:41:55.000000000","reason":"\u003cGERRIT_ACCOUNT_11604\u003e replied on the change","reason_account":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"}},"10342":{"account":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"last_update":"2026-07-03 17:17:35.000000000","reason":"Change was abandoned"}},"hashtags":[],"change_id":"I2d9cb097ecfeaf0b2153977c25dec5dc17f0274a","subject":"[WIP] perf(ironic): suppress redundant _refresh_cache calls during startup (B1)","status":"ABANDONED","created":"2026-03-16 10:37:08.000000000","updated":"2026-07-03 17:17:35.000000000","total_comment_count":2,"unresolved_comment_count":1,"has_review_started":true,"meta_rev_id":"a9d1a08121513e7d6abde8802949fb7a0eb335e9","_number":980677,"virtual_id_number":980677,"owner":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"actions":{},"labels":{"Verified":{"disliked":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"tag":"autogenerated:zuul:check","value":-1,"date":"2026-03-16 12:32:39.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","value":-1,"default_value":0,"optional":true},"Code-Review":{"all":[{"value":0,"permitted_voting_range":{"min":-2,"max":2},"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"rejected":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"all":[{"value":-1,"date":"2026-03-16 16:41:55.000000000","permitted_voting_range":{"min":-1,"max":1},"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"_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":2},"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"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"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"CC":[{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]}],"REVIEWER":[{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-03-16 11:08:56.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-03-16 11:17: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-03-16 12:32:39.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2026-03-16 16:26:55.000000000","updated_by":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"reviewer":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"state":"CC"}],"messages":[{"id":"692c073716e435619590a6e206517f3b8f1ad09a","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-03-16 10:37:08.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"c2a123c02f01757b2a4f1600a223dd6d1c0ce084","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-16 11:08:56.000000000","message":"Patch Set 1:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/fd079d341391470fab6f7d2fdd0a97b1\n\n- openstack-tox-py310-arm64 https://zuul.opendev.org/t/openstack/build/06fff35bf77e418e944cadfcb2111b4b : FAILURE in 15m 42s (non-voting)\n- openstack-tox-py313-arm64 https://zuul.opendev.org/t/openstack/build/6a161339e8d94aaf8dc1fe57f3aeeb87 : FAILURE in 20m 28s (non-voting)\n- openstack-tox-py314-arm64 https://zuul.opendev.org/t/openstack/build/3368594bbe6147bf9b73e6440d9723a7 : FAILURE in 21m 53s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"bde4fe702cf000ca3ed7d302bc1849dad2b8b0ae","author":{"_account_id":14384,"name":"Quobyte CI","email":"openstack-ci-external@quobyte.com","username":"quobyteci","tags":["SERVICE_USER"]},"date":"2026-03-16 11:17:28.000000000","message":"Patch Set 1:\n\nBuild Successful \n\n* quobyteci:  nova_quobyteci : SUCCESS, logs at: https://oscilogs.quobyte.com/logs/I2d9cb097ecfeaf0b2153977c25dec5dc17f0274a .","accounts_in_message":[],"_revision_number":1},{"id":"800718f10991dcba10b8299e5411d6d17aef8b8d","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-16 12:32:39.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/01051793d6c5451097a8ac693a0825bc\n\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/642d4de9c34945e7947abfd95f757f99 : SUCCESS in 1h 02m 40s\n- tempest-integrated-compute https://zuul.opendev.org/t/openstack/build/96d6f929a7f6449ab10c49ed0f3ecd15 : SUCCESS in 58m 41s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/ad36e79b5750424e800a9d7cec0c1d60 : SUCCESS in 1h 08m 25s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/d5578adbf492408e90912b83d28c0532 : FAILURE in 37m 56s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/c7b42488181d4027add74f120017caa0 : SUCCESS in 5m 25s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/a150147d686d45cfac5da5f2d0904d62 : FAILURE in 10m 34s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/8b159b736eab4dc2b2f476875036860c : FAILURE in 15m 46s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/ab38d7437db64f47849a675a488e8f5c : FAILURE in 10m 27s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/f4337c9a95804d70931840374091196a : SUCCESS in 11m 43s\n- nova-ceph-multistore https://zuul.opendev.org/t/openstack/build/713f0397fbf941cca923538a99a75d2f : SUCCESS in 1h 47m 38s\n- nova-live-migration https://zuul.opendev.org/t/openstack/build/8814f526ee6e479ea89d6667dcf96154 : SUCCESS in 30m 09s\n- nova-graceful-shutdown https://zuul.opendev.org/t/openstack/build/09cb117a38dc469f8c91f887025b8f4f : SUCCESS in 1h 05m 07s\n- nova-live-migration-ceph https://zuul.opendev.org/t/openstack/build/17580890dd87466b8fa644f9aaca6fa6 : SUCCESS in 44m 47s\n- nova-multi-cell https://zuul.opendev.org/t/openstack/build/94f090ec24fc4e3491673709e5154e7e : SUCCESS in 1h 51m 04s\n- nova-next https://zuul.opendev.org/t/openstack/build/fd702bc667144fe28088c13a68b09fdf : SUCCESS in 1h 46m 01s\n- nova-alt-configurations https://zuul.opendev.org/t/openstack/build/13660a60e7bb4a8785519351fdb63083 : SUCCESS in 54m 33s\n- nova-tox-validate-backport https://zuul.opendev.org/t/openstack/build/60e37ff8f8ee48de89ffd66b57aece98 : SUCCESS in 5m 57s (non-voting)\n- nova-tox-functional-py310 https://zuul.opendev.org/t/openstack/build/53a737dbcbbe427195b9ccf9a0fcedf4 : SUCCESS in 26m 15s\n- nova-tox-functional-py313 https://zuul.opendev.org/t/openstack/build/ec0408a415644669a0c93e8d9b0155b3 : SUCCESS in 25m 53s\n- nova-grenade-multinode https://zuul.opendev.org/t/openstack/build/84a84d37fcc34db9b010851e0af1a437 : SUCCESS in 1h 23m 03s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/c0b7d8c8cb2b4742b95b884e1a1e94e3 : SUCCESS in 1h 09m 09s\n- cyborg-tempest https://zuul.opendev.org/t/openstack/build/34273d8e647c46cda8aaed77aadd9709 : SUCCESS in 29m 52s (non-voting)\n- barbican-tempest-plugin-simple-crypto https://zuul.opendev.org/t/openstack/build/deae32f5fbda45a39108c8eeebc6f8ba : SUCCESS in 25m 06s (non-voting)\n- nova-tox-py312-threading https://zuul.opendev.org/t/openstack/build/c8b350abfa5444ba8df49037c5b04cbc : FAILURE in 15m 56s","accounts_in_message":[],"_revision_number":1},{"id":"b08471116fa1c0a59b93001da6fe4cc15f57c80e","author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"date":"2026-03-16 16:26:55.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"fcf97d823b50fb20f7d3cfacb9e60d3094dafd04","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-03-16 16:41:55.000000000","message":"Patch Set 1: Workflow-1\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"a9d1a08121513e7d6abde8802949fb7a0eb335e9","tag":"autogenerated:gerrit:abandon","author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"date":"2026-07-03 17:17:35.000000000","message":"Abandoned","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"9fed2d15eb6ce09a9508d43e61b89534d7d4228d","revisions":{"9fed2d15eb6ce09a9508d43e61b89534d7d4228d":{"kind":"REWORK","_number":1,"created":"2026-03-16 10:37:08.000000000","uploader":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"ref":"refs/changes/77/980677/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/77/980677/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/77/980677/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/77/980677/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/77/980677/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/77/980677/1"}}},"commit":{"parents":[{"commit":"157cff3408e4501c87f2e8d348031d73aa12489d","subject":"[WIP] perf(ironic): eliminate O(N²) ProviderTree deepcopy at startup (B6)","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/157cff3408e4501c87f2e8d348031d73aa12489d"}]}],"author":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-03-16 00:03:09.000000000","tz":0},"committer":{"name":"Sean Mooney","email":"work@seanmooney.info","date":"2026-03-16 10:34:36.000000000","tz":0},"subject":"[WIP] perf(ironic): suppress redundant _refresh_cache calls during startup (B1)","message":"[WIP] perf(ironic): suppress redundant _refresh_cache calls during startup (B1)\n\nDuring nova-compute startup get_available_nodes() is called 3-4 times\nwithin a few seconds (init_host, destroy_evacuated_instances,\nupdate_available_resource).  Each call unconditionally hits the Ironic\nnode-list API which costs 2-10 s per 1000 nodes, so a 1000-node\ndeployment wastes 6-30 s on duplicate work.\n\nAdd [ironic] node_cache_min_refresh_interval (default 120 s).  When\nthe node cache was populated less than this many seconds ago,\nget_available_nodes() returns the cached result without calling\n_refresh_cache() again.  Setting the option to 0 restores the original\nbehaviour.\n\nThe default of 120 s safely covers the startup window (all redundant\ncalls happen within ~1 s of each other) while still allowing the first\nperiodic update_available_resource task to trigger a fresh Ironic query\nonce it falls outside the window.\n\nUnit tests cover: warm cache suppresses refresh, stale cache triggers\nrefresh, zero interval always refreshes.  Two new functional tests\nexercise the same contract end-to-end.\n\nGenerated-By: Cursor sonnet 4.6\nRelated-Bug: startup performance bottleneck B1 (startup.md)\nChange-Id: I2d9cb097ecfeaf0b2153977c25dec5dc17f0274a\nSigned-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/9fed2d15eb6ce09a9508d43e61b89534d7d4228d"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/9fed2d15eb6ce09a9508d43e61b89534d7d4228d"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"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":["label:Workflow\u003dMIN"],"failing_atoms":["label:Workflow\u003dMAX"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
