)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5e6cce89fa7f02eb39b7c38548681bd9a7ebe29e","unresolved":true,"context_lines":[{"line_number":18,"context_line":"* .result() instead of .wait()"},{"line_number":19,"context_line":"* .add_done_callback() instead of .link(). Here we needed to change the"},{"line_number":20,"context_line":"  usage as the new callback does not forward args, so we rely on"},{"line_number":21,"context_line":"  closures instead."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Also the way we implement SpawnIsSynchronousFixture in our test is"},{"line_number":24,"context_line":"adapted along with other test fixture adaptation to call / mock the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"d06f671d_3f85c2a0","line":21,"updated":"2025-05-13 12:07:45.000000000","message":"ok when i read this i was affaid you were going to be sprinkelign lambdas all over teh code but what your actully relying on is that the inline function that is defiend as the cleanup handleler has access to the scope its defiend in  \n\nhttps://review.opendev.org/c/openstack/nova/+/948072/9/nova/virt/libvirt/driver.py#11323\n\nin general, i associate closures with unnamed functions not named ones like that so this is a little confusing at first glance but I get where you\u0027re coming from.\n\nin the test code you are using lambdas to achive the same effect which is fine in this context\n\nhttps://review.opendev.org/c/openstack/nova/+/948072/9/nova/tests/fixtures/nova.py#1217\n\nlambda are just harder to debug in general but its not like you can reliably  step through the code today in a debugger anyway so this isnt really and improment or impediment to future debugablity.\n\nso ya i think this approch makes sense.","commit_id":"529537e729ddc4efd72673fac8a9631a3da13e3b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"336c904184b53be61f3106df267e097681b5bafe","unresolved":false,"context_lines":[{"line_number":18,"context_line":"* .result() instead of .wait()"},{"line_number":19,"context_line":"* .add_done_callback() instead of .link(). Here we needed to change the"},{"line_number":20,"context_line":"  usage as the new callback does not forward args, so we rely on"},{"line_number":21,"context_line":"  closures instead."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Also the way we implement SpawnIsSynchronousFixture in our test is"},{"line_number":24,"context_line":"adapted along with other test fixture adaptation to call / mock the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"9410cdbf_2b20615f","line":21,"in_reply_to":"d06f671d_3f85c2a0","updated":"2025-05-14 13:08:32.000000000","message":"I agree.","commit_id":"529537e729ddc4efd72673fac8a9631a3da13e3b"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d005788ebefadbb2e766e60a70b6d77c148bc472","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"763005a5_9f81ec11","updated":"2025-05-13 12:12:47.000000000","message":"recheck nova-ceph-multistore bug/2109428 nova-next bug/2110545","commit_id":"529537e729ddc4efd72673fac8a9631a3da13e3b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"16c2930ea8666efaee224f333daf24795788b527","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"fb281eae_a8845eff","updated":"2025-05-13 08:03:45.000000000","message":"recheck nova-lvm one test timed out with POST request timing out\n```\nTraceback (most recent call last):\n  File \"/opt/stack/tempest/tempest/common/utils/__init__.py\", line 65, in wrapper\n    return f(*func_args, **func_kwargs)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/opt/stack/tempest/tempest/api/compute/servers/test_attach_interfaces.py\", line 284, in test_create_list_show_delete_interfaces_by_fixed_ip\n    iface \u003d self._test_create_interface_by_fixed_ips(server, ifs)\n            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/opt/stack/tempest/tempest/api/compute/servers/test_attach_interfaces.py\", line 185, in _test_create_interface_by_fixed_ips\n    iface \u003d self.interfaces_client.create_interface(\n            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/opt/stack/tempest/tempest/lib/services/compute/interfaces_client.py\", line 47, in create_interface\n    resp, body \u003d self.post(\u0027servers/%s/os-interface\u0027 % server_id,\n                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/opt/stack/tempest/tempest/lib/common/rest_client.py\", line 314, in post\n    resp_header, resp_body \u003d self.request(\n                             ^^^^^^^^^^^^^\n[...]\n  File \"/opt/stack/tempest/.tox/tempest/lib/python3.12/site-packages/urllib3/connectionpool.py\", line 716, in urlopen\n    httplib_response \u003d self._make_request(\n                       ^^^^^^^^^^^^^^^^^^^\n  File \"/opt/stack/tempest/.tox/tempest/lib/python3.12/site-packages/urllib3/connectionpool.py\", line 470, in _make_request\n    self._raise_timeout(err\u003de, url\u003durl, timeout_value\u003dread_timeout)\n  File \"/opt/stack/tempest/.tox/tempest/lib/python3.12/site-packages/urllib3/connectionpool.py\", line 358, in _raise_timeout\n    raise ReadTimeoutError(\nurllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host\u003d\u002710.176.194.15\u0027, port\u003d443): Read timed out. (read timeout\u003d90)\n```","commit_id":"529537e729ddc4efd72673fac8a9631a3da13e3b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2ae5cbf115e6c2602ead1f39c861884558ca0800","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":12,"id":"b8942cd9_ed0d9a68","updated":"2025-05-26 14:43:11.000000000","message":"over all i am happy with the content of this patch","commit_id":"66c3849ecc1475a6ad8e33bef7e64b7820a717cb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"215202a1dbbc814f0f26fd91ba6a147894dc9b24","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"9bfd59bd_b4ad8fa0","updated":"2025-05-19 14:27:23.000000000","message":"recheck bug/2111269 (nova-lvm)","commit_id":"66c3849ecc1475a6ad8e33bef7e64b7820a717cb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"26c5b392a0e517a1a44f8a2a6c88de8c141df4bb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"bf3eb05e_bf934d27","in_reply_to":"b8942cd9_ed0d9a68","updated":"2025-06-03 13:07:49.000000000","message":"Acknowledged","commit_id":"66c3849ecc1475a6ad8e33bef7e64b7820a717cb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8a3bb7182e318b2824b276e579eedf5f5780d078","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"95bcb6e9_226160db","updated":"2025-06-05 13:52:21.000000000","message":"I will update the commit message and the func doc text based on the discussion inline.","commit_id":"528c30be2e2acdd9193ca73397cde195d7b7c89a"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"84af8e6488a58dc5f96ac2c80afd554f27cbabac","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":14,"id":"28b02283_de36c5c8","updated":"2025-06-04 15:17:45.000000000","message":"Soft -1 just for a notification about a minor thing about spawn_n.\n\nOverall the patch lgtm.","commit_id":"528c30be2e2acdd9193ca73397cde195d7b7c89a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"55bbcabc5fcbd6986e928e111f0d643510db653c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"04795aef_dea00c37","in_reply_to":"28b02283_de36c5c8","updated":"2025-06-13 10:54:56.000000000","message":"Acknowledged","commit_id":"528c30be2e2acdd9193ca73397cde195d7b7c89a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"738ab3825eeaf3c53bf545b942200de1fe8b25bb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"ec29d78a_2ff12d12","updated":"2025-06-24 09:05:53.000000000","message":"Reviewed with no concerns so far but I\u0027m a bit having issues for reviewing the unittests, I\u0027ll do another round after looking at other patches.","commit_id":"886b8123b0e39824e74f7e9a574a2e1caea42479"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a9149d5a588e4077fda606e032d5adfd13a4041a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"005d07e7_db738292","updated":"2025-06-27 07:04:00.000000000","message":"recheck grenade timed out dumping the DBs","commit_id":"886b8123b0e39824e74f7e9a574a2e1caea42479"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8abb61286ce9f16f5f29fc35b82d52336eeb23d8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"380cd563_5ff76f09","updated":"2025-06-26 13:26:34.000000000","message":"recheck grenade timeout on dumping DBs","commit_id":"886b8123b0e39824e74f7e9a574a2e1caea42479"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a6f83aef0c8f26ccae8081d8c0d8a8acde1e9619","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"16b369fb_0b0d0e46","updated":"2025-06-27 13:55:45.000000000","message":"recheck grenade-skip-level-always timed out on dumping the DBs","commit_id":"886b8123b0e39824e74f7e9a574a2e1caea42479"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e2fa61dec521fa1cfec9e6d083c358e8a208f8e1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"ffa557f1_b9b69f5a","updated":"2025-06-26 10:00:40.000000000","message":"recheck parent is on the gate now","commit_id":"886b8123b0e39824e74f7e9a574a2e1caea42479"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b50921f08a302731dee2fdf1d0dce749a0d233e8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"4ac815ab_a0606408","updated":"2025-07-02 12:43:48.000000000","message":"I cannot reproduce the functional failure locally. This patch had a lot of green functional results in the past the the patch did not change but now functional fails in this and the patches top of it (see the FUPs). So I think something changed in the test environment causing this. I will push an independent patch to the CI to see if we have a full block on the functional job","commit_id":"c9050d2fe8b4b39aca1f6a591dbf2f6c5660bd64"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"576d0495194983819c10382113f500f2400cac98","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"d1494a73_03542d3f","updated":"2025-06-30 17:25:57.000000000","message":"I need to wait until https://review.opendev.org/c/openstack/neutron/+/953768 lands before reacheck as the hybrid-plug job is blocked by it","commit_id":"c9050d2fe8b4b39aca1f6a591dbf2f6c5660bd64"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a0fa3aa22fc1b427a6abdd773fc1d49a019e7df3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"588392b5_43e39a79","updated":"2025-06-30 14:03:04.000000000","message":"Just rebased","commit_id":"c9050d2fe8b4b39aca1f6a591dbf2f6c5660bd64"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8e3acf129277ba970db896eca78b18e33ccd7246","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"162c2527_360fabfb","updated":"2025-07-01 12:12:01.000000000","message":"nova we have to wait for the mirrors to catch up with the package deps fix from ubuntu\n```\nThe following packages have unmet dependencies:\n qemu-block-extra : Depends: librbd1 (\u003e\u003d 19.2.1-0ubuntu0.24.04.1) but 19.2.0-0ubuntu0.24.04.2 is to be installed\nE: Unable to correct problems, you have held broken packages.\n```","commit_id":"c9050d2fe8b4b39aca1f6a591dbf2f6c5660bd64"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ecff409bc22349f6d9366514c2bf8d99dadab44a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"4949674c_b7f70a41","updated":"2025-07-01 16:51:45.000000000","message":"recheck hoping for the ceph job to got unblocked from the package dependency problem.","commit_id":"c9050d2fe8b4b39aca1f6a591dbf2f6c5660bd64"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"761f524090a2ccf004413acf52c9ddf1c4ce6300","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"f37d2505_731406a5","updated":"2025-07-01 08:50:17.000000000","message":"recheck hybrid-plug is expected to be green now","commit_id":"c9050d2fe8b4b39aca1f6a591dbf2f6c5660bd64"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4ffede4a8bbdcc9dd4ea4a3e3e48e2a41e5af04d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"01ec5f3f_fe01e99d","updated":"2025-07-02 10:32:23.000000000","message":"recheck praying for the gods of package dependencies","commit_id":"c9050d2fe8b4b39aca1f6a591dbf2f6c5660bd64"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"21bcb389f1092659d4f8e9881d959052c19eb692","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"499494f7_ff0650d0","in_reply_to":"038d0d17_8b58cb59","updated":"2025-07-02 13:48:56.000000000","message":"fixed the wrong merge conflict resolution. Functional should be green now.","commit_id":"c9050d2fe8b4b39aca1f6a591dbf2f6c5660bd64"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fdf1bbac051331198ce2268d30f7130abda9aefb","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":16,"id":"038d0d17_8b58cb59","in_reply_to":"4ac815ab_a0606408","updated":"2025-07-02 12:50:24.000000000","message":"OK, so PS15 had green functional test. Then PS16 (the latest) was just a rebase but it picked up something from master that makes the functional test now failing.","commit_id":"c9050d2fe8b4b39aca1f6a591dbf2f6c5660bd64"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a263a1a6354d8242965ad1fd3ccdfcaabfa8e381","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"7913370d_e8895bb0","in_reply_to":"d1494a73_03542d3f","updated":"2025-06-30 20:02:43.000000000","message":"yep i was about to comment the same. we can recheck this tomorrow.\n\nit will be anouther hour or two before it lands.","commit_id":"c9050d2fe8b4b39aca1f6a591dbf2f6c5660bd64"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a03ae552daa0b744e2506370d9a760b88b1ca4c5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"43f0710d_f339d518","updated":"2025-07-02 13:54:13.000000000","message":"Aside from some comment changes I didn\u0027t chase down, this indeed looks like just a fixed rebase, so I will ninja re-approve it.","commit_id":"d90e7726c0b72966a0d3df9e922e0df5df04b114"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c77533be191da2d64aede03b0410a58244f12bc6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"266f5e86_f2c34610","updated":"2025-07-03 13:02:22.000000000","message":"recheck\n```\n+ functions:wait_for_compute:505           :   echo \u0027Didn\u0027\\\u0027\u0027t find service registered by hostname after 60 seconds\u0027\nDidn\u0027t find service registered by hostname after 60 seconds\n+ functions:wait_for_compute:506           :   openstack --os-cloud devstack-admin --os-region RegionOne compute service list\nFailed to discover available identity versions when contacting https://10.210.192.131/identity. Attempting to parse version from URL.\nCould not find versioned identity endpoints when attempting to authenticate. Please check that your auth_url is correct. Request to https://10.210.192.131/identity timed out\n```","commit_id":"d90e7726c0b72966a0d3df9e922e0df5df04b114"}],"nova/tests/fixtures/nova.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2ae5cbf115e6c2602ead1f39c861884558ca0800","unresolved":false,"context_lines":[{"line_number":1211,"context_line":""},{"line_number":1212,"context_line":"        def _get_default_green_pool():"},{"line_number":1213,"context_line":"            self.greenpool \u003d origi_default_green_pool()"},{"line_number":1214,"context_line":"            self.greenpool.name \u003d f\"{self.test_case_id}.default\""},{"line_number":1215,"context_line":"            return self.greenpool"},{"line_number":1216,"context_line":"        # NOTE(sean-k-mooney): greenpools use eventlet.spawn and"},{"line_number":1217,"context_line":"        # eventlet.spawn_n so we can\u0027t stub out all calls to those functions."}],"source_content_type":"text/x-python","patch_set":12,"id":"18af5048_2b65714d","line":1214,"updated":"2025-05-26 14:43:11.000000000","message":"ack that is nice for tracablitiy","commit_id":"66c3849ecc1475a6ad8e33bef7e64b7820a717cb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2ae5cbf115e6c2602ead1f39c861884558ca0800","unresolved":false,"context_lines":[{"line_number":1321,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":1322,"context_line":"            \u0027nova.utils.spawn_n\u0027, _FakeFuture))"},{"line_number":1323,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":1324,"context_line":"            \u0027nova.utils.spawn\u0027, _FakeFuture))"},{"line_number":1325,"context_line":""},{"line_number":1326,"context_line":""},{"line_number":1327,"context_line":"class BannedDBSchemaOperations(fixtures.Fixture):"}],"source_content_type":"text/x-python","patch_set":12,"id":"5da94992_89034f9b","line":1324,"updated":"2025-05-26 14:43:11.000000000","message":"this all look fine.\n\nthe one part that makes me a little sus is actully a change in \n\nhttps://review.opendev.org/c/openstack/nova/+/947966\n\nwe were intentionally using a synchronous executor when this was used before.\n\nhttps://review.opendev.org/c/openstack/nova/+/947966/14/nova/tests/fixtures/nova.py\naltereted that behavior to use real greenthread or thread pool executros\n\nThat may have unintended consequences. \n\nim ok to proveed in that direction for now but if we have any instablity in the tests or we see a large increase in memroy useage due to our defautl concurrancy we may need to revert to using the SynchronousExecutor executor form futurist\n\nhttps://github.com/openstack/futurist/blob/master/futurist/_futures.py#L227\n\npart of the reason for using the SynchronousExecutor was ensuring we do not have any deadlocs or logic that only works when you have muliple threads\nyou can make the argujent that by not usign it we ensure that we dont have any logic that requires a single thread but given we have tets that expect one behivor and we are now changing to the other we may break some assumtions in the tests\n\nthat why i kept the SynchronousThreadPoolExecutorFixture in \n\nhttps://review.opendev.org/c/openstack/nova/+/922497/5/nova/tests/fixtures/nova.py#1242\n\nand extended it to cover the ThreadPoolExecutor\n\nself.useFixture(fixtures.MonkeyPatch(\n            \u0027futurist.GreenThreadPoolExecutor\u0027, _FakeExecutor))\n        self.useFixture(fixtures.MonkeyPatch(\n            \u0027futurist.ThreadPoolExecutor\u0027, _FakeExecutor))\n\nsince this seams to be passign fine currently lets proceed with this and we can alwasy revisit.","commit_id":"66c3849ecc1475a6ad8e33bef7e64b7820a717cb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b649f6f8f3d2384aa1f3c50bb14a318b84321b30","unresolved":false,"context_lines":[{"line_number":1321,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":1322,"context_line":"            \u0027nova.utils.spawn_n\u0027, _FakeFuture))"},{"line_number":1323,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":1324,"context_line":"            \u0027nova.utils.spawn\u0027, _FakeFuture))"},{"line_number":1325,"context_line":""},{"line_number":1326,"context_line":""},{"line_number":1327,"context_line":"class BannedDBSchemaOperations(fixtures.Fixture):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3ed37cdd_183fd4b8","line":1324,"in_reply_to":"5da94992_89034f9b","updated":"2025-05-27 08:16:16.000000000","message":"I\u0027m not sure I fully get the problem. This fixture will mock before the task added into any kind of executor as it mocks utils.spawn. It ensures that what returned from utils.spawn is compatible with the new interface contract. It is not a Greenthread any more but a futurist Future, so the FakeFuture simulate that interface with the same \"already done\" behavior as the previous FakeGreenThread did.","commit_id":"66c3849ecc1475a6ad8e33bef7e64b7820a717cb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c4bce8f7e018efdeb084104e3c14a0687987923e","unresolved":true,"context_lines":[{"line_number":1312,"context_line":"        func(self)"},{"line_number":1313,"context_line":""},{"line_number":1314,"context_line":"    def result(self):"},{"line_number":1315,"context_line":"        return self._result"},{"line_number":1316,"context_line":""},{"line_number":1317,"context_line":""},{"line_number":1318,"context_line":"class SpawnIsSynchronousFixture(fixtures.Fixture):"}],"source_content_type":"text/x-python","patch_set":16,"id":"8fd43782_5d819852","line":1315,"updated":"2025-07-02 13:48:15.000000000","message":"this is a botched rebased from master during PS16. The result should raise if there was an exception.\n\nhttps://github.com/openstack/nova/blob/2c19c07d5e29ca5445fa6dd45a6117542951714c/nova/tests/fixtures/nova.py#L1329-L1333\n\n@ksambor@redhat.com please be careful next time when you resolving merge conflicts.","commit_id":"c9050d2fe8b4b39aca1f6a591dbf2f6c5660bd64"}],"nova/tests/unit/test_context.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3c07a2a42211fc8de45682235738686f54368439","unresolved":true,"context_lines":[{"line_number":23,"context_line":"from nova import exception"},{"line_number":24,"context_line":"from nova import objects"},{"line_number":25,"context_line":"from nova import test"},{"line_number":26,"context_line":"from nova.tests import fixtures as nova_fixtures"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class ContextTestCase(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"33a9c00c_03ee3b47","side":"PARENT","line":26,"updated":"2025-04-24 14:19:39.000000000","message":"this belongs to a previous patch in the series :/","commit_id":"0e6d854c0d770b8296f8e0850f1984235de169e3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6650fd78b67810ee921de0f835589fe1a735c012","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from nova import exception"},{"line_number":24,"context_line":"from nova import objects"},{"line_number":25,"context_line":"from nova import test"},{"line_number":26,"context_line":"from nova.tests import fixtures as nova_fixtures"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class ContextTestCase(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":1,"id":"31da44b1_09510ee4","side":"PARENT","line":26,"in_reply_to":"33a9c00c_03ee3b47","updated":"2025-04-25 11:19:13.000000000","message":"Done","commit_id":"0e6d854c0d770b8296f8e0850f1984235de169e3"}],"nova/tests/unit/test_fixtures.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"738ab3825eeaf3c53bf545b942200de1fe8b25bb","unresolved":false,"context_lines":[{"line_number":303,"context_line":"        self.assertEqual(\u0027foo\u0027, foo)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    def test_spawn_has_link(self):"},{"line_number":306,"context_line":"        self.useFixture(fixtures.SpawnIsSynchronousFixture())"},{"line_number":307,"context_line":"        gt \u003d utils.spawn(mock.MagicMock)"},{"line_number":308,"context_line":"        passed_arg \u003d \u0027test\u0027"},{"line_number":309,"context_line":"        call_count \u003d []"}],"source_content_type":"text/x-python","patch_set":15,"id":"71e24316_3388fcda","side":"PARENT","line":306,"range":{"start_line":306,"start_character":33,"end_line":306,"end_character":58},"updated":"2025-06-24 09:05:53.000000000","message":"let it go indeed","commit_id":"2275b8545e732b8bf29433a6a9cbcf00f4afad34"}],"nova/tests/unit/test_utils.py":[{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"84af8e6488a58dc5f96ac2c80afd554f27cbabac","unresolved":false,"context_lines":[{"line_number":772,"context_line":"        def fake(arg):"},{"line_number":773,"context_line":"            pass"},{"line_number":774,"context_line":"        pool \u003d utils._get_default_green_pool()"},{"line_number":775,"context_line":"        with mock.patch.object(pool, \"submit\", _fake_spawn):"},{"line_number":776,"context_line":"            getattr(utils, self.spawn_name)(fake, \u0027test\u0027)"},{"line_number":777,"context_line":"        self.assertIsNone(common_context.get_current())"},{"line_number":778,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"b165ef10_219e4a26","line":775,"range":{"start_line":775,"start_character":37,"end_line":775,"end_character":45},"updated":"2025-06-04 15:17:45.000000000","message":"Note to myself:\nThis is normal as we are not using spawn_n or spawn in the end.","commit_id":"528c30be2e2acdd9193ca73397cde195d7b7c89a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"5de1b40a278e76a35737d7981c40235eacf9c8a4","unresolved":true,"context_lines":[{"line_number":1493,"context_line":"    def test_executor_is_named(self):"},{"line_number":1494,"context_line":"        executor \u003d utils._get_default_green_pool()"},{"line_number":1495,"context_line":"        # NOTE(gibi): during test we use a test-case-specific name, outside"},{"line_number":1496,"context_line":"        # of test we use process name specific name instead."},{"line_number":1497,"context_line":"        self.assertRegex(executor.name,"},{"line_number":1498,"context_line":"            \"nova.tests.unit.test_utils.DefaultExecutor.*\""},{"line_number":1499,"context_line":"            \"test_executor_is_named.default\")"}],"source_content_type":"text/x-python","patch_set":15,"id":"49cdeb55_f17d094d","line":1496,"updated":"2025-06-24 14:46:16.000000000","message":"This is to make sure we didn\u0027t leak the pool from the previous test right? This is sort of a test of the base test case, which isn\u0027t bad, but might be worth more words in the comment to make it clear it\u0027s not testing production code (except incidentally).\n\nI guess this is a copy of L1461, so no need to change it here, but maybe a follow-up to fix both (assuming I\u0027m right).","commit_id":"886b8123b0e39824e74f7e9a574a2e1caea42479"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"12e90ddc5e95968d4ba598ba109e79abc6a031ad","unresolved":true,"context_lines":[{"line_number":1493,"context_line":"    def test_executor_is_named(self):"},{"line_number":1494,"context_line":"        executor \u003d utils._get_default_green_pool()"},{"line_number":1495,"context_line":"        # NOTE(gibi): during test we use a test-case-specific name, outside"},{"line_number":1496,"context_line":"        # of test we use process name specific name instead."},{"line_number":1497,"context_line":"        self.assertRegex(executor.name,"},{"line_number":1498,"context_line":"            \"nova.tests.unit.test_utils.DefaultExecutor.*\""},{"line_number":1499,"context_line":"            \"test_executor_is_named.default\")"}],"source_content_type":"text/x-python","patch_set":15,"id":"6b514298_813a39fe","line":1496,"in_reply_to":"49cdeb55_f17d094d","updated":"2025-06-25 14:26:19.000000000","message":"+1 for a follow up patch to adress this rather then here.","commit_id":"886b8123b0e39824e74f7e9a574a2e1caea42479"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e42b95b41fd527e0af3aa89cd83aa534678ca605","unresolved":true,"context_lines":[{"line_number":1493,"context_line":"    def test_executor_is_named(self):"},{"line_number":1494,"context_line":"        executor \u003d utils._get_default_green_pool()"},{"line_number":1495,"context_line":"        # NOTE(gibi): during test we use a test-case-specific name, outside"},{"line_number":1496,"context_line":"        # of test we use process name specific name instead."},{"line_number":1497,"context_line":"        self.assertRegex(executor.name,"},{"line_number":1498,"context_line":"            \"nova.tests.unit.test_utils.DefaultExecutor.*\""},{"line_number":1499,"context_line":"            \"test_executor_is_named.default\")"}],"source_content_type":"text/x-python","patch_set":15,"id":"8b6f7e7e_86d3b8a5","line":1496,"in_reply_to":"6b514298_813a39fe","updated":"2025-06-25 17:22:41.000000000","message":"The executor is named both in the production code and in the test env. But named differently. The test case specific name is indeed added to help troubleshooting leaked executors between test cases. We learned this the hard way when leaked greenthreads sent notifications between test cases causing hard to debug test instabilities.\n\nI will add more words to the comment in a follow up.","commit_id":"886b8123b0e39824e74f7e9a574a2e1caea42479"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ca3384ec8c2d72f48275604fc235860cd6c2e267","unresolved":false,"context_lines":[{"line_number":1493,"context_line":"    def test_executor_is_named(self):"},{"line_number":1494,"context_line":"        executor \u003d utils._get_default_green_pool()"},{"line_number":1495,"context_line":"        # NOTE(gibi): during test we use a test-case-specific name, outside"},{"line_number":1496,"context_line":"        # of test we use process name specific name instead."},{"line_number":1497,"context_line":"        self.assertRegex(executor.name,"},{"line_number":1498,"context_line":"            \"nova.tests.unit.test_utils.DefaultExecutor.*\""},{"line_number":1499,"context_line":"            \"test_executor_is_named.default\")"}],"source_content_type":"text/x-python","patch_set":15,"id":"6e5a72a2_edea64de","line":1496,"in_reply_to":"8b6f7e7e_86d3b8a5","updated":"2025-06-25 17:23:52.000000000","message":"https://review.opendev.org/c/openstack/nova/+/953339","commit_id":"886b8123b0e39824e74f7e9a574a2e1caea42479"}],"nova/utils.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"61e9fc17d8eaa2c2a73b3c4f6caa855e478e3728","unresolved":true,"context_lines":[{"line_number":91,"context_line":"    time.sleep(0)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"def destroy_default_green_pool():"},{"line_number":95,"context_line":"    \"\"\"Closes the executor and resets the global to None to allow forked worker"},{"line_number":96,"context_line":"    processes to properly init it."},{"line_number":97,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"22129320_355fb026","line":94,"updated":"2025-06-12 15:19:50.000000000","message":"Feels like furthering the use of \"green\" in these titles is not very useful since they won\u0027t be green in a few patches...","commit_id":"528c30be2e2acdd9193ca73397cde195d7b7c89a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"55bbcabc5fcbd6986e928e111f0d643510db653c","unresolved":true,"context_lines":[{"line_number":91,"context_line":"    time.sleep(0)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"def destroy_default_green_pool():"},{"line_number":95,"context_line":"    \"\"\"Closes the executor and resets the global to None to allow forked worker"},{"line_number":96,"context_line":"    processes to properly init it."},{"line_number":97,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"b6445ed3_0bf59162","line":94,"in_reply_to":"22129320_355fb026","updated":"2025-06-13 10:54:56.000000000","message":"I do the rename in a single commit https://review.opendev.org/c/openstack/nova/+/948086","commit_id":"528c30be2e2acdd9193ca73397cde195d7b7c89a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"5de1b40a278e76a35737d7981c40235eacf9c8a4","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    time.sleep(0)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"def destroy_default_green_pool():"},{"line_number":95,"context_line":"    \"\"\"Closes the executor and resets the global to None to allow forked worker"},{"line_number":96,"context_line":"    processes to properly init it."},{"line_number":97,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"d09c8c20_250dc692","line":94,"in_reply_to":"b6445ed3_0bf59162","updated":"2025-06-24 14:46:16.000000000","message":"Acknowledged","commit_id":"528c30be2e2acdd9193ca73397cde195d7b7c89a"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"84af8e6488a58dc5f96ac2c80afd554f27cbabac","unresolved":true,"context_lines":[{"line_number":734,"context_line":"    context when using this method to spawn a new thread."},{"line_number":735,"context_line":"    \"\"\""},{"line_number":736,"context_line":""},{"line_number":737,"context_line":"    spawn(func, *args, **kwargs)"},{"line_number":738,"context_line":""},{"line_number":739,"context_line":""},{"line_number":740,"context_line":"def tpool_execute(func, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":14,"id":"6c4fd9c4_c3891ef9","line":737,"range":{"start_line":737,"start_character":4,"end_line":737,"end_character":32},"updated":"2025-06-04 15:17:45.000000000","message":"Maybe a note is required because the behavior is not the same.\nWe are not using spawn_n anymore, and spawn_n was optimized to be faster by not returning the function value or exception.","commit_id":"528c30be2e2acdd9193ca73397cde195d7b7c89a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8a3bb7182e318b2824b276e579eedf5f5780d078","unresolved":true,"context_lines":[{"line_number":734,"context_line":"    context when using this method to spawn a new thread."},{"line_number":735,"context_line":"    \"\"\""},{"line_number":736,"context_line":""},{"line_number":737,"context_line":"    spawn(func, *args, **kwargs)"},{"line_number":738,"context_line":""},{"line_number":739,"context_line":""},{"line_number":740,"context_line":"def tpool_execute(func, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":14,"id":"9b237ce1_3e6ea8ef","line":737,"range":{"start_line":737,"start_character":4,"end_line":737,"end_character":32},"in_reply_to":"011f846c_7ecf92f1","updated":"2025-06-05 13:52:21.000000000","message":"Yeah there are a sizable amount of implementation details behind spawn and spawn_n. Actually spawn creates GreenThread a wrapper around greenlet while spawn_n creates only the underlying greenlet. The greenlet cannot be managed the same way as a more intelligent GreenThread, including the return value but not limited to it, e.g. the whole cancellation mechanism is missing from greenlet too. \n\nI will update the function\u0027s doc text but spawn_n will go away very soon anyhow. \n\nI will not the above in the commit message too..\n\nSo I agree that this change is changing the underlying implementation that can have performance impact or even behavioral impact if something was dependent on the greenlet / GreenThread differences inadvertently.","commit_id":"528c30be2e2acdd9193ca73397cde195d7b7c89a"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"5a959e1f7e09982f00d63b6873e251ddf61734a1","unresolved":true,"context_lines":[{"line_number":734,"context_line":"    context when using this method to spawn a new thread."},{"line_number":735,"context_line":"    \"\"\""},{"line_number":736,"context_line":""},{"line_number":737,"context_line":"    spawn(func, *args, **kwargs)"},{"line_number":738,"context_line":""},{"line_number":739,"context_line":""},{"line_number":740,"context_line":"def tpool_execute(func, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":14,"id":"011f846c_7ecf92f1","line":737,"range":{"start_line":737,"start_character":4,"end_line":737,"end_character":32},"in_reply_to":"6c4fd9c4_c3891ef9","updated":"2025-06-04 16:06:07.000000000","message":"I guess there is a slight performance impact. But I strongly think it can be neglected because in the end there are not a huge number of greenthreads/threads.","commit_id":"528c30be2e2acdd9193ca73397cde195d7b7c89a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"55bbcabc5fcbd6986e928e111f0d643510db653c","unresolved":false,"context_lines":[{"line_number":734,"context_line":"    context when using this method to spawn a new thread."},{"line_number":735,"context_line":"    \"\"\""},{"line_number":736,"context_line":""},{"line_number":737,"context_line":"    spawn(func, *args, **kwargs)"},{"line_number":738,"context_line":""},{"line_number":739,"context_line":""},{"line_number":740,"context_line":"def tpool_execute(func, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":14,"id":"4ea9f6f2_03d9d3d3","line":737,"range":{"start_line":737,"start_character":4,"end_line":737,"end_character":32},"in_reply_to":"9b237ce1_3e6ea8ef","updated":"2025-06-13 10:54:56.000000000","message":"Done","commit_id":"528c30be2e2acdd9193ca73397cde195d7b7c89a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"738ab3825eeaf3c53bf545b942200de1fe8b25bb","unresolved":false,"context_lines":[{"line_number":720,"context_line":"    \"\"\""},{"line_number":721,"context_line":""},{"line_number":722,"context_line":"    return pass_context("},{"line_number":723,"context_line":"        _get_default_green_pool().submit, func, *args, **kwargs)"},{"line_number":724,"context_line":""},{"line_number":725,"context_line":""},{"line_number":726,"context_line":"def spawn_n(func, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":15,"id":"939372cc_f73018e9","line":723,"updated":"2025-06-24 09:05:53.000000000","message":"yet again we\u0027re lucky that we can\u0027t call submit() on a shutdown\u0027d pool so no worries here","commit_id":"886b8123b0e39824e74f7e9a574a2e1caea42479"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"738ab3825eeaf3c53bf545b942200de1fe8b25bb","unresolved":false,"context_lines":[{"line_number":724,"context_line":""},{"line_number":725,"context_line":""},{"line_number":726,"context_line":"def spawn_n(func, *args, **kwargs):"},{"line_number":727,"context_line":"    \"\"\"Passthrough method for eventlet.greenpool.spawn."},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"    This utility exists so that it can be stubbed for testing without"},{"line_number":730,"context_line":"    interfering with the service spawns."}],"source_content_type":"text/x-python","patch_set":15,"id":"1d254093_63b8a0de","line":727,"range":{"start_line":727,"start_character":30,"end_line":727,"end_character":38},"updated":"2025-06-24 09:05:53.000000000","message":"technically, this will change later in the series 😊","commit_id":"886b8123b0e39824e74f7e9a574a2e1caea42479"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e42b95b41fd527e0af3aa89cd83aa534678ca605","unresolved":false,"context_lines":[{"line_number":724,"context_line":""},{"line_number":725,"context_line":""},{"line_number":726,"context_line":"def spawn_n(func, *args, **kwargs):"},{"line_number":727,"context_line":"    \"\"\"Passthrough method for eventlet.greenpool.spawn."},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"    This utility exists so that it can be stubbed for testing without"},{"line_number":730,"context_line":"    interfering with the service spawns."}],"source_content_type":"text/x-python","patch_set":15,"id":"1379a43c_c650f405","line":727,"range":{"start_line":727,"start_character":30,"end_line":727,"end_character":38},"in_reply_to":"1d254093_63b8a0de","updated":"2025-06-25 17:22:41.000000000","message":"it will even be removed!","commit_id":"886b8123b0e39824e74f7e9a574a2e1caea42479"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"738ab3825eeaf3c53bf545b942200de1fe8b25bb","unresolved":false,"context_lines":[{"line_number":734,"context_line":"    context when using this method to spawn a new thread."},{"line_number":735,"context_line":""},{"line_number":736,"context_line":"    Note that this is not different from calling spawn. Both spawn and"},{"line_number":737,"context_line":"    spawn_n uses the eventlet.spawn."},{"line_number":738,"context_line":"    \"\"\""},{"line_number":739,"context_line":""},{"line_number":740,"context_line":"    spawn(func, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":15,"id":"6016b2d6_e7f9eb83","line":737,"updated":"2025-06-24 09:05:53.000000000","message":"thanks for the addition","commit_id":"886b8123b0e39824e74f7e9a574a2e1caea42479"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2ae5cbf115e6c2602ead1f39c861884558ca0800","unresolved":true,"context_lines":[{"line_number":11327,"context_line":"        future.add_done_callback(thread_finished)"},{"line_number":11328,"context_line":""},{"line_number":11329,"context_line":"        # Let eventlet schedule the new thread right away"},{"line_number":11330,"context_line":"        time.sleep(0)"},{"line_number":11331,"context_line":""},{"line_number":11332,"context_line":"        try:"},{"line_number":11333,"context_line":"            LOG.debug(\"Starting monitoring of live migration\","}],"source_content_type":"text/x-python","patch_set":12,"id":"7587fbbb_a8900574","line":11330,"updated":"2025-05-26 14:43:11.000000000","message":"i guess this was either missed by https://review.opendev.org/c/openstack/nova/+/947212\n\nor this should be utils.cooperative_yield()\n\nwe probaly shoudl add a hackign check for time.sleep(0) now that we have the new function but this can be adressed in a followup.","commit_id":"66c3849ecc1475a6ad8e33bef7e64b7820a717cb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"94ae4de91d880e16b71932ed0ce5dd82671fea68","unresolved":false,"context_lines":[{"line_number":11327,"context_line":"        future.add_done_callback(thread_finished)"},{"line_number":11328,"context_line":""},{"line_number":11329,"context_line":"        # Let eventlet schedule the new thread right away"},{"line_number":11330,"context_line":"        time.sleep(0)"},{"line_number":11331,"context_line":""},{"line_number":11332,"context_line":"        try:"},{"line_number":11333,"context_line":"            LOG.debug(\"Starting monitoring of live migration\","}],"source_content_type":"text/x-python","patch_set":12,"id":"6bfebbbf_d56daca8","line":11330,"in_reply_to":"308d9bde_a8116ecc","updated":"2025-05-27 13:23:55.000000000","message":"See patches as separate fixes for this.\n* https://review.opendev.org/c/openstack/nova/+/950991\n* https://review.opendev.org/c/openstack/nova/+/950992","commit_id":"66c3849ecc1475a6ad8e33bef7e64b7820a717cb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f3183721ba9dc9c88896a8de7666265b6670f5a4","unresolved":false,"context_lines":[{"line_number":11327,"context_line":"        future.add_done_callback(thread_finished)"},{"line_number":11328,"context_line":""},{"line_number":11329,"context_line":"        # Let eventlet schedule the new thread right away"},{"line_number":11330,"context_line":"        time.sleep(0)"},{"line_number":11331,"context_line":""},{"line_number":11332,"context_line":"        try:"},{"line_number":11333,"context_line":"            LOG.debug(\"Starting monitoring of live migration\","}],"source_content_type":"text/x-python","patch_set":12,"id":"3090311e_b62a7269","line":11330,"in_reply_to":"6bfebbbf_d56daca8","updated":"2025-05-27 13:33:35.000000000","message":"I\u0027ve also added https://review.opendev.org/c/openstack/nova/+/950994/1 to make cooperative_yield a no-op in threading mode.","commit_id":"66c3849ecc1475a6ad8e33bef7e64b7820a717cb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b649f6f8f3d2384aa1f3c50bb14a318b84321b30","unresolved":true,"context_lines":[{"line_number":11327,"context_line":"        future.add_done_callback(thread_finished)"},{"line_number":11328,"context_line":""},{"line_number":11329,"context_line":"        # Let eventlet schedule the new thread right away"},{"line_number":11330,"context_line":"        time.sleep(0)"},{"line_number":11331,"context_line":""},{"line_number":11332,"context_line":"        try:"},{"line_number":11333,"context_line":"            LOG.debug(\"Starting monitoring of live migration\","}],"source_content_type":"text/x-python","patch_set":12,"id":"308d9bde_a8116ecc","line":11330,"in_reply_to":"7587fbbb_a8900574","updated":"2025-05-27 08:16:16.000000000","message":"You are right it was missed. I will fix it in a follow up for clarity.","commit_id":"66c3849ecc1475a6ad8e33bef7e64b7820a717cb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"84af8e6488a58dc5f96ac2c80afd554f27cbabac","unresolved":false,"context_lines":[{"line_number":11322,"context_line":"        def thread_finished(_):"},{"line_number":11323,"context_line":"            LOG.debug(\"Migration operation thread notification\","},{"line_number":11324,"context_line":"                      instance\u003dinstance)"},{"line_number":11325,"context_line":"            finish_event.send()"},{"line_number":11326,"context_line":""},{"line_number":11327,"context_line":"        future.add_done_callback(thread_finished)"},{"line_number":11328,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"2be516ec_681ffdee","line":11325,"range":{"start_line":11325,"start_character":12,"end_line":11325,"end_character":24},"updated":"2025-06-04 15:17:45.000000000","message":"Note to myself:\nThis is defined because this is a closure.\n\n_ is because future.add_done_callback pass the future as 1st argument.","commit_id":"528c30be2e2acdd9193ca73397cde195d7b7c89a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"738ab3825eeaf3c53bf545b942200de1fe8b25bb","unresolved":false,"context_lines":[{"line_number":11319,"context_line":"        finish_event \u003d eventlet.event.Event()"},{"line_number":11320,"context_line":"        self.active_migrations[instance.uuid] \u003d deque()"},{"line_number":11321,"context_line":""},{"line_number":11322,"context_line":"        def thread_finished(_):"},{"line_number":11323,"context_line":"            LOG.debug(\"Migration operation thread notification\","},{"line_number":11324,"context_line":"                      instance\u003dinstance)"},{"line_number":11325,"context_line":"            finish_event.send()"}],"source_content_type":"text/x-python","patch_set":15,"id":"4c1b6f02_33400ca3","line":11322,"updated":"2025-06-24 09:05:53.000000000","message":"acceptable patch","commit_id":"886b8123b0e39824e74f7e9a574a2e1caea42479"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"738ab3825eeaf3c53bf545b942200de1fe8b25bb","unresolved":false,"context_lines":[{"line_number":11324,"context_line":"                      instance\u003dinstance)"},{"line_number":11325,"context_line":"            finish_event.send()"},{"line_number":11326,"context_line":""},{"line_number":11327,"context_line":"        future.add_done_callback(thread_finished)"},{"line_number":11328,"context_line":""},{"line_number":11329,"context_line":"        # Let eventlet schedule the new thread right away"},{"line_number":11330,"context_line":"        time.sleep(0)"}],"source_content_type":"text/x-python","patch_set":15,"id":"f5348d71_87eaedc9","line":11327,"updated":"2025-06-24 09:05:53.000000000","message":"++","commit_id":"886b8123b0e39824e74f7e9a574a2e1caea42479"}]}
