)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c06df6a6142fda7fc2058adfd914e5e40349eedb","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP: allow service to start with threading"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Depends-On: https://review.opendev.org/c/openstack/oslo.service/+/945720"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I6e2e6a43df78d23580b5e7402352a5036100ab36"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"c08e15ec_b6435b01","line":9,"updated":"2025-05-19 10:51:51.000000000","message":"without this the unit test would fail as only the new patch oslo patch adds the ability to call init backend multiple times with the same value.","commit_id":"7209b8f731dee8f45acda4b94ae6282b24c98dbd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5eaefac583ef0f3f6e696e8e4132c1ef50cc73bf","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP: allow service to start with threading"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Depends-On: https://review.opendev.org/c/openstack/oslo.service/+/945720"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I6e2e6a43df78d23580b5e7402352a5036100ab36"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"ba15660d_180b4a9b","line":9,"in_reply_to":"c08e15ec_b6435b01","updated":"2025-05-26 12:12:56.000000000","message":"Done. oslo.service 4.2.0 is release with the threading backned and this patch is updated to require that.","commit_id":"7209b8f731dee8f45acda4b94ae6282b24c98dbd"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ed050cc4cc4a036138c5dd38ecd458fbfae189fe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"8cc4515b_22ec4c03","updated":"2025-04-28 11:49:00.000000000","message":"Using https://review.opendev.org/c/openstack/oslo.service/+/948310 and manually installing cotyledon in the venv, then trying to start nova-scheduler in threading mode:\n```\n(venv) stack@aio:/opt/stack/nova$ OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue nova-scheduler --config-file /etc/nova/nova.conf \nService is starting with native threading. This is currently experimental. Do not use it in production.\nCRITICAL nova [-] Unhandled error: TypeError: ThreadGroup.__init__() takes 1 positional argument but 2 were given\nERROR nova Traceback (most recent call last):\nERROR nova   File \"/opt/stack/data/venv/bin/nova-scheduler\", line 8, in \u003cmodule\u003e\nERROR nova     sys.exit(main())\nERROR nova              ^^^^^^\nERROR nova   File \"/opt/stack/nova/nova/cmd/scheduler.py\", line 45, in main\nERROR nova     server \u003d service.Service.create(\nERROR nova              ^^^^^^^^^^^^^^^^^^^^^^^\nERROR nova   File \"/opt/stack/nova/nova/service.py\", line 245, in create\nERROR nova     service_obj \u003d cls(host, binary, topic, manager,\nERROR nova                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nERROR nova   File \"/opt/stack/nova/nova/service.py\", line 101, in __init__\nERROR nova     super(Service, self).__init__()\nERROR nova   File \"/opt/stack/oslo.service/oslo_service/backend/threading/service.py\", line 156, in __init__\nERROR nova     self.tg \u003d threadgroup.ThreadGroup(threads)\nERROR nova               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nERROR nova TypeError: ThreadGroup.__init__() takes 1 positional argument but 2 were given\nERROR nova \n```","commit_id":"23adbf06c370b7d3720d1c06d13fc462015e9ec1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9fd6661cf39f25431247acf49223f6e49f50b841","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"9822b9f3_28dcf9e5","in_reply_to":"25bbe960_72b10dcd","updated":"2025-04-28 15:00:32.000000000","message":"Thanks to @smooney@redhat.com we have the first VM boot with native threaded scheduler:\nThe remaining piece was turning off the explicit eventlet based RPC and let oslo.messaging choose the backend automatically:\n```\n(venv) stack@aio:/opt/stack/nova$ git diff\ndiff --git a/nova/rpc.py b/nova/rpc.py\nindex 7a92650414..55883998d8 100644\n--- a/nova/rpc.py\n+++ b/nova/rpc.py\n@@ -220,7 +220,7 @@ def get_server(target, endpoints, serializer\u003dNone):\n     return messaging.get_rpc_server(TRANSPORT,\n                                     target,\n                                     endpoints,\n-                                    executor\u003d\u0027eventlet\u0027,\n+                                    #executor\u003d\u0027eventlet\u0027,\n                                     serializer\u003dserializer,\n                                     access_policy\u003daccess_policy)\n```","commit_id":"23adbf06c370b7d3720d1c06d13fc462015e9ec1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f15cdd6dd41b8083e3baba1c3b507dff05bf949d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"25bbe960_72b10dcd","in_reply_to":"4ec27cda_92c7bc7b","updated":"2025-04-28 14:52:03.000000000","message":"With https://review.opendev.org/c/openstack/oslo.service/+/948310/8 not the nova-scheduler is able to start up without crashing\n```\nDEBUG nova.service [None req-c7ea8710-af7a-4c59-a90e-2668c6073bee None None] Join ServiceGroup membership for this service scheduler {{(pid\u003d116962) start /opt/stack/nova/nova/service.py:194}}\nDEBUG nova.servicegroup.drivers.db [None req-c7ea8710-af7a-4c59-a90e-2668c6073bee None None] DB_Driver: join new ServiceGroup member aio to the scheduler group, service \u003d \u003cService: host\u003daio, binary\u003dnova-scheduler, manager_class_name\u003dnova.scheduler.manager.SchedulerManager\u003e {{(pid\u003d116962) join /opt/stack/nova/nova/servicegroup/drivers/db.py:44}}\n```\nIt does not get any RPC message yet, so we cannot schedule.","commit_id":"23adbf06c370b7d3720d1c06d13fc462015e9ec1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bf69ab05782c1918d5967f7595f709c4fd82b929","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"d8951dab_ac961f85","in_reply_to":"746394dd_5845d08d","updated":"2025-04-28 13:13:56.000000000","message":"After one more fix. With https://review.opendev.org/c/openstack/oslo.service/+/948310/4 now I\u0027m getting:\n```\nDEBUG nova.service [None req-5b8ab90e-3aeb-4747-8848-4aadacba8f9e None None] Creating RPC server for service scheduler {{(pid\u003d110067) start /opt/stack/nova/nova/service.py:177}}\nTraceback (most recent call last):\n  File \"/opt/stack/oslo.service/oslo_service/backend/threading/service.py\", line 97, in run\n    self.service_instance.start()\n  File \"/opt/stack/nova/nova/service.py\", line 190, in start\n    self.rpcserver.start()\n  File \"/opt/stack/oslo.messaging/oslo_messaging/server.py\", line 243, in wrapper\n    with self._reset_lock:\n         ^^^^^^^^^^^^^^^^\nAttributeError: \u0027RPCServer\u0027 object has no attribute \u0027_reset_lock\u0027\n```\nThis feels like progress","commit_id":"23adbf06c370b7d3720d1c06d13fc462015e9ec1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"425274c35dafb5d61608d3eaa50840ad2e857349","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"746394dd_5845d08d","in_reply_to":"8cc4515b_22ec4c03","updated":"2025-04-28 11:56:34.000000000","message":"Using PS2 from https://review.opendev.org/c/openstack/oslo.service/+/948310/2 now I see:\n```\n(venv) stack@aio:/opt/stack/nova$ OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue nova-scheduler --config-file /etc/nova/nova.conf \nService is starting with native threading. This is currently experimental. Do not use it in production.\nINFO oslo_service.periodic_task [-] Skipping periodic task _discover_hosts_in_cells because its interval is negative\nINFO dbcounter [None req-acb043e7-e565-4afb-a0ed-09d17c44127c None None] Registered counter for database nova_api\nDEBUG oslo_db.sqlalchemy.engines [None req-acb043e7-e565-4afb-a0ed-09d17c44127c None None] MySQL server mode set to STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_ENGINE_SUBSTITUTION {{(pid\u003d104766) _check_effective_sql_mode /opt/stack/data/venv/lib/python3.12/site-packages/oslo_db/sqlalchemy/engines.py:397}}\nDEBUG dbcounter [-] [104766] Writer thread running {{(pid\u003d104766) stat_writer /opt/stack/data/venv/lib/python3.12/site-packages/dbcounter.py:102}}\nDEBUG nova.scheduler.host_manager [None req-acb043e7-e565-4afb-a0ed-09d17c44127c None None] Found 1 cells: 01df0428-91ee-4b1a-8d15-e3811f508a77 {{(pid\u003d104766) refresh_cells_caches /opt/stack/nova/nova/scheduler/host_manager.py:746}}\nDEBUG nova.scheduler.host_manager [None req-acb043e7-e565-4afb-a0ed-09d17c44127c None None] Found 0 disabled cells:  {{(pid\u003d104766) refresh_cells_caches /opt/stack/nova/nova/scheduler/host_manager.py:758}}\nDEBUG nova.scheduler.host_manager [None req-acb043e7-e565-4afb-a0ed-09d17c44127c None None] START:_async_init_instance_info {{(pid\u003d104766) _async_init_instance_info /opt/stack/nova/nova/scheduler/host_manager.py:427}}\nDEBUG oslo_concurrency.lockutils [None req-7bdc7fdd-6829-47f1-9614-81a85172586a None None] Acquiring lock \"01df0428-91ee-4b1a-8d15-e3811f508a77\" by \"nova.context.set_target_cell.\u003clocals\u003e.get_or_set_cached_cell_and_set_connections\" {{(pid\u003d104766) inner /opt/stack/data/venv/lib/python3.12/site-packages/oslo_concurrency/lockutils.py:405}}\nDEBUG oslo_concurrency.lockutils [None req-7bdc7fdd-6829-47f1-9614-81a85172586a None None] Lock \"01df0428-91ee-4b1a-8d15-e3811f508a77\" acquired by \"nova.context.set_target_cell.\u003clocals\u003e.get_or_set_cached_cell_and_set_connections\" :: waited 0.000s {{(pid\u003d104766) inner /opt/stack/data/venv/lib/python3.12/site-packages/oslo_concurrency/lockutils.py:410}}\nDEBUG oslo_concurrency.lockutils [None req-7bdc7fdd-6829-47f1-9614-81a85172586a None None] Lock \"01df0428-91ee-4b1a-8d15-e3811f508a77\" \"released\" by \"nova.context.set_target_cell.\u003clocals\u003e.get_or_set_cached_cell_and_set_connections\" :: held 0.000s {{(pid\u003d104766) inner /opt/stack/data/venv/lib/python3.12/site-packages/oslo_concurrency/lockutils.py:424}}\nINFO dbcounter [None req-7bdc7fdd-6829-47f1-9614-81a85172586a None None] Registered counter for database nova_cell1\nDEBUG oslo_db.sqlalchemy.engines [None req-7bdc7fdd-6829-47f1-9614-81a85172586a None None] MySQL server mode set to STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_ENGINE_SUBSTITUTION {{(pid\u003d104766) _check_effective_sql_mode /opt/stack/data/venv/lib/python3.12/site-packages/oslo_db/sqlalchemy/engines.py:397}}\nDEBUG dbcounter [-] [104766] Writer thread running {{(pid\u003d104766) stat_writer /opt/stack/data/venv/lib/python3.12/site-packages/dbcounter.py:102}}\nDEBUG nova.scheduler.host_manager [None req-7bdc7fdd-6829-47f1-9614-81a85172586a None None] Total number of compute nodes: 2 {{(pid\u003d104766) _async_init_instance_info /opt/stack/nova/nova/scheduler/host_manager.py:440}}\nDEBUG oslo_concurrency.lockutils [None req-7bdc7fdd-6829-47f1-9614-81a85172586a None None] Acquiring lock \"01df0428-91ee-4b1a-8d15-e3811f508a77\" by \"nova.context.set_target_cell.\u003clocals\u003e.get_or_set_cached_cell_and_set_connections\" {{(pid\u003d104766) inner /opt/stack/data/venv/lib/python3.12/site-packages/oslo_concurrency/lockutils.py:405}}\nDEBUG oslo_concurrency.lockutils [None req-7bdc7fdd-6829-47f1-9614-81a85172586a None None] Lock \"01df0428-91ee-4b1a-8d15-e3811f508a77\" acquired by \"nova.context.set_target_cell.\u003clocals\u003e.get_or_set_cached_cell_and_set_connections\" :: waited 0.000s {{(pid\u003d104766) inner /opt/stack/data/venv/lib/python3.12/site-packages/oslo_concurrency/lockutils.py:410}}\nDEBUG oslo_concurrency.lockutils [None req-7bdc7fdd-6829-47f1-9614-81a85172586a None None] Lock \"01df0428-91ee-4b1a-8d15-e3811f508a77\" \"released\" by \"nova.context.set_target_cell.\u003clocals\u003e.get_or_set_cached_cell_and_set_connections\" :: held 0.000s {{(pid\u003d104766) inner /opt/stack/data/venv/lib/python3.12/site-packages/oslo_concurrency/lockutils.py:424}}\nDEBUG nova.scheduler.host_manager [None req-7bdc7fdd-6829-47f1-9614-81a85172586a None None] Adding 0 instances for hosts 10-20 {{(pid\u003d104766) _async_init_instance_info /opt/stack/nova/nova/scheduler/host_manager.py:459}}\nDEBUG nova.scheduler.host_manager [None req-7bdc7fdd-6829-47f1-9614-81a85172586a None None] END:_async_init_instance_info {{(pid\u003d104766) _async_init_instance_info /opt/stack/nova/nova/scheduler/host_manager.py:470}}\nDEBUG nova.context [None req-acb043e7-e565-4afb-a0ed-09d17c44127c None None] Found 2 cells: 00000000-0000-0000-0000-000000000000(cell0),01df0428-91ee-4b1a-8d15-e3811f508a77(cell1) {{(pid\u003d104766) load_cells /opt/stack/nova/nova/context.py:459}}\nDEBUG oslo_concurrency.lockutils [None req-5e08bfe6-37c9-4db5-aa3b-c1590ef55510 None None] Acquiring lock \"00000000-0000-0000-0000-000000000000\" by \"nova.context.set_target_cell.\u003clocals\u003e.get_or_set_cached_cell_and_set_connections\" {{(pid\u003d104766) inner /opt/stack/data/venv/lib/python3.12/site-packages/oslo_concurrency/lockutils.py:405}}\nDEBUG oslo_concurrency.lockutils [None req-5e08bfe6-37c9-4db5-aa3b-c1590ef55510 None None] Lock \"00000000-0000-0000-0000-000000000000\" acquired by \"nova.context.set_target_cell.\u003clocals\u003e.get_or_set_cached_cell_and_set_connections\" :: waited 0.000s {{(pid\u003d104766) inner /opt/stack/data/venv/lib/python3.12/site-packages/oslo_concurrency/lockutils.py:410}}\nDEBUG oslo_concurrency.lockutils [None req-5e08bfe6-37c9-4db5-aa3b-c1590ef55510 None None] Lock \"00000000-0000-0000-0000-000000000000\" \"released\" by \"nova.context.set_target_cell.\u003clocals\u003e.get_or_set_cached_cell_and_set_connections\" :: held 0.000s {{(pid\u003d104766) inner /opt/stack/data/venv/lib/python3.12/site-packages/oslo_concurrency/lockutils.py:424}}\nDEBUG oslo_concurrency.lockutils [None req-5e08bfe6-37c9-4db5-aa3b-c1590ef55510 None None] Acquiring lock \"01df0428-91ee-4b1a-8d15-e3811f508a77\" by \"nova.context.set_target_cell.\u003clocals\u003e.get_or_set_cached_cell_and_set_connections\" {{(pid\u003d104766) inner /opt/stack/data/venv/lib/python3.12/site-packages/oslo_concurrency/lockutils.py:405}}\nINFO dbcounter [None req-5e08bfe6-37c9-4db5-aa3b-c1590ef55510 None None] Registered counter for database nova_cell0\nDEBUG oslo_concurrency.lockutils [None req-5e08bfe6-37c9-4db5-aa3b-c1590ef55510 None None] Lock \"01df0428-91ee-4b1a-8d15-e3811f508a77\" acquired by \"nova.context.set_target_cell.\u003clocals\u003e.get_or_set_cached_cell_and_set_connections\" :: waited 0.001s {{(pid\u003d104766) inner /opt/stack/data/venv/lib/python3.12/site-packages/oslo_concurrency/lockutils.py:410}}\nDEBUG oslo_concurrency.lockutils [None req-5e08bfe6-37c9-4db5-aa3b-c1590ef55510 None None] Lock \"01df0428-91ee-4b1a-8d15-e3811f508a77\" \"released\" by \"nova.context.set_target_cell.\u003clocals\u003e.get_or_set_cached_cell_and_set_connections\" :: held 0.001s {{(pid\u003d104766) inner /opt/stack/data/venv/lib/python3.12/site-packages/oslo_concurrency/lockutils.py:424}}\nDEBUG oslo_db.sqlalchemy.engines [None req-5e08bfe6-37c9-4db5-aa3b-c1590ef55510 None None] MySQL server mode set to STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_ENGINE_SUBSTITUTION {{(pid\u003d104766) _check_effective_sql_mode /opt/stack/data/venv/lib/python3.12/site-packages/oslo_db/sqlalchemy/engines.py:397}}\nDEBUG dbcounter [-] [104766] Writer thread running {{(pid\u003d104766) stat_writer /opt/stack/data/venv/lib/python3.12/site-packages/dbcounter.py:102}}\nINFO oslo_service.backend.threading.service [None req-5e08bfe6-37c9-4db5-aa3b-c1590ef55510 None None] Launching service with 2 workers via Cotyledon\nProcess Process-1:\nTraceback (most recent call last):\n  File \"/usr/lib/python3.12/multiprocessing/process.py\", line 314, in _bootstrap\n    self.run()\n  File \"/usr/lib/python3.12/multiprocessing/process.py\", line 108, in run\n    self._target(*self._args, **self._kwargs)\n  File \"/opt/stack/data/venv/lib/python3.12/site-packages/cotyledon/_utils.py\", line 71, in _bootstrap_process\n    target(*args, **kwargs)\n  File \"/opt/stack/data/venv/lib/python3.12/site-packages/cotyledon/_service.py\", line 162, in create_and_wait\n    sw \u003d cls(*args, **kwargs)\n         ^^^^^^^^^^^^^^^^^^^^\n  File \"/opt/stack/data/venv/lib/python3.12/site-packages/cotyledon/_service.py\", line 183, in __init__\n    self.service \u003d config.service(worker_id, *args, **kwargs)\n                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nTypeError: oslo_service.backend.threading.service.ServiceWrapper() argument after ** must be a mapping, not Service\nINFO cotyledon._service_manager [-] Child 104780 exited with status 1\nProcess Process-2:\nTraceback (most recent call last):\n  File \"/usr/lib/python3.12/multiprocessing/process.py\", line 314, in _bootstrap\n    self.run()\n  File \"/usr/lib/python3.12/multiprocessing/process.py\", line 108, in run\n    self._target(*self._args, **self._kwargs)\n  File \"/opt/stack/data/venv/lib/python3.12/site-packages/cotyledon/_utils.py\", line 71, in _bootstrap_process\n    target(*args, **kwargs)\n  File \"/opt/stack/data/venv/lib/python3.12/site-packages/cotyledon/_service.py\", line 162, in create_and_wait\n    sw \u003d cls(*args, **kwargs)\n         ^^^^^^^^^^^^^^^^^^^^\n  File \"/opt/stack/data/venv/lib/python3.12/site-packages/cotyledon/_service.py\", line 183, in __init__\n    self.service \u003d config.service(worker_id, *args, **kwargs)\n                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nTypeError: oslo_service.backend.threading.service.ServiceWrapper() argument after ** must be a mapping, not Service\nINFO cotyledon._service_manager [-] Child 104782 exited with status 1\nINFO cotyledon._service_manager [-] Forking too fast, sleeping\n```","commit_id":"23adbf06c370b7d3720d1c06d13fc462015e9ec1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0fcd57f4b2775fceb47e1434a561e146e9966deb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"89a6e4ea_5411c579","in_reply_to":"9822b9f3_28dcf9e5","updated":"2025-06-03 13:07:07.000000000","message":"Done","commit_id":"23adbf06c370b7d3720d1c06d13fc462015e9ec1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0c30469cbf231ad7d147a72a86479432985beba0","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"4ec27cda_92c7bc7b","in_reply_to":"d8951dab_ac961f85","updated":"2025-04-28 14:26:46.000000000","message":"The last one caused by a missing super().__init__ in oslo.service. After I added that in https://review.opendev.org/c/openstack/oslo.service/+/948310/5 I now get\n```\nDEBUG nova.service [None req-e1b95a14-e405-4a8f-8a9f-fe13e587ada1 None None] Creating RPC server for service scheduler {{(pid\u003d114802) start /opt/stack/nova/nova/service.py:177}}\nRPCServer.__init__ before super mro [\u003cclass \u0027oslo_messaging.rpc.server.RPCServer\u0027\u003e, \u003cclass \u0027oslo_messaging.server.MessageHandlingServer\u0027\u003e, \u003cclass \u0027oslo_service.backend.threading.service.Service\u0027\u003e, \u003cclass \u0027oslo_service.backend.base.ServiceBase\u0027\u003e, \u003cclass \u0027oslo_messaging.server._OrderedTaskRunner\u0027\u003e, \u003cclass \u0027object\u0027\u003e]\nMessageHandlingServer.__init__ before stuff\nMessageHandlingServer.__init__ before super\n_OrderedTaskRunner.__init__\n_OrderedTaskRunner.__init__ creating self._reset_lock\n_OrderedTaskRunner.__init__ created self._reset_lock \u003cunlocked _thread.lock object at 0x7be8d3200500\u003e\nMessageHandlingServer.__init__ after super\nRPCServer.__init__ after super\nDEBUG nova.service [None req-b83a3565-ae8e-4d34-8627-40714c7d8ec2 None None] Join ServiceGroup membership for this service scheduler {{(pid\u003d114798) start /opt/stack/nova/nova/service.py:194}}\nDEBUG nova.servicegroup.drivers.db [None req-b83a3565-ae8e-4d34-8627-40714c7d8ec2 None None] DB_Driver: join new ServiceGroup member aio to the scheduler group, service \u003d \u003cService: host\u003daio, binary\u003dnova-scheduler, manager_class_name\u003dnova.scheduler.manager.SchedulerManager\u003e {{(pid\u003d114798) join /opt/stack/nova/nova/servicegroup/drivers/db.py:44}}\nTraceback (most recent call last):\n  File \"/opt/stack/oslo.service/oslo_service/backend/threading/service.py\", line 98, in run\n    self.service_instance.wait()  # Block until the service stops.\n    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/opt/stack/oslo.service/oslo_service/backend/threading/service.py\", line 209, in wait\n    self.tg.wait()\n    ^^^^^^^^^^^^\nAttributeError: \u0027ThreadGroup\u0027 object has no attribute \u0027wait\u0027\nINFO cotyledon._service_manager [-] Child 114798 exited with status 1\n```","commit_id":"23adbf06c370b7d3720d1c06d13fc462015e9ec1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"da878f2545221df767b6adecd5e1f08a317402a7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"0260d048_52639188","updated":"2025-05-19 12:02:20.000000000","message":"the unit / functional test and docs failure is due to the oslo.service dependency. We need the oslo.service patch landed, released and bumped to be able to run the tests. Locally you can run it by manually installing the unmerged oslo.service patch in the venv.","commit_id":"7209b8f731dee8f45acda4b94ae6282b24c98dbd"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"29ef1de3dac582d90ec801250a9087d7626eaa41","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"94f870b0_a2e1cb8a","updated":"2025-06-11 13:15:46.000000000","message":"Soft -1 to notify about a question on dependencies.\nOtherwise the patch looks ok.","commit_id":"27dcb06cb87a7d494587b3e9792afb22cb4470eb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"34ef145860ad5a639a1c0bd398d36a4ed673d63a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"da9bb88c_26220034","updated":"2025-06-04 07:01:17.000000000","message":"recheck grenade timed out","commit_id":"27dcb06cb87a7d494587b3e9792afb22cb4470eb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fea1f6369ab0d656e7ef7b2552504f27638d02af","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"14df7b9e_da943e56","updated":"2025-06-05 12:26:05.000000000","message":"recheck grenade timeout","commit_id":"27dcb06cb87a7d494587b3e9792afb22cb4470eb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"04763cce8fca7dfd9df07f724edf72cbea8e3d5f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":37,"id":"61688024_69e817b5","updated":"2025-07-22 09:20:03.000000000","message":"Just a question about using the existing monkeypatch module for setting the oslo.service usage between eventlet and threading. \nIs it the right interface we would like to use ?","commit_id":"d0f8d91cc99d2cee14dc4258433a93dd94e68dcb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"dd73474464ab9a677aaa4b48b7cc929154ca8a7c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":40,"id":"ac504bca_41146b89","updated":"2025-07-25 18:12:23.000000000","message":"recheck ceph download error\n```\n2025-07-25 15:49:27.429 | ++ /opt/stack/devstack-plugin-ceph/devstack/lib/cephadm:get_cephadm:177 :   curl -f -O https://download.ceph.com/rpm-/el9/noarch/cephadm\n2025-07-25 15:49:27.455 |   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n2025-07-25 15:49:27.455 |                                  Dload  Upload   Total   Spent    Left  Speed\n2025-07-25 15:49:27.638 | \n  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\n  0   146    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\n2025-07-25 15:49:27.638 | curl: (22) The requested URL returned error: 404\n2025-07-25 15:49:27.649 | + /opt/stack/devstack-plugin-ceph/devstack/lib/cephadm:get_cephadm:1 :   exit_trap\n```","commit_id":"c07e350eb8be7eb575d1d2cce61e52e39a66225a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"1bb9912533dfa56b34eb63ffe31ddea01b8262a1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":40,"id":"78170bbb_238eee33","updated":"2025-07-28 14:19:40.000000000","message":"thanks for the clarification","commit_id":"c07e350eb8be7eb575d1d2cce61e52e39a66225a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"00580cafb16fd8f0edd7799860fbb5a044e19881","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":43,"id":"160a3f59_d54ae7a4","updated":"2025-08-12 14:48:56.000000000","message":"Unfortunately 02fcae2d45 just merged yesterday and removed the os import which is causing all the unit tests to fail.","commit_id":"077b6a7bdc8c4296937eb0d7d9c00908a8aa31f3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c3b6f34f60aa5a79ef2cae7b5ef9d5be1c0c42a2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":43,"id":"d67b4b84_f1d52f8c","updated":"2025-08-02 17:17:20.000000000","message":"recheck\n```\n+ functions-common:apt_get:1214            :   sudo DEBIAN_FRONTEND\u003dnoninteractive http_proxy\u003d https_proxy\u003d no_proxy\u003d apt-get --option Dpkg::Options::\u003d--force-confold --assume-yes install ksmtuned\nReading package lists...\nBuilding dependency tree...\nReading state information...\nE: Unable to locate package ksmtuned\n```","commit_id":"077b6a7bdc8c4296937eb0d7d9c00908a8aa31f3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6baa2d66f2962d60a0d1e08f81c89782c16b394d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":43,"id":"f5b01236_a6b90812","updated":"2025-08-01 12:22:14.000000000","message":"recheck \n```\ntempest.exceptions.VolumeResourceBuildErrorException: volume 94d9f4c4-5b67-4555-ad90-69dfaf668619 failed to build and is in ERROR status\n```","commit_id":"077b6a7bdc8c4296937eb0d7d9c00908a8aa31f3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cc4b3a35b22bd630320d059becd494f781cd998d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":43,"id":"4d4e763c_72fff95b","updated":"2025-08-02 07:51:09.000000000","message":"recheck encrypted volume creation fails\n```\nAug 01 18:30:11.453857 npaa6f6dca93f24 cinder-volume[102309]: ERROR oslo_messaging.rpc.server [None req-a293a1a5-44f6-4609-a426-52a487a3111f tempest-TestEncryptedCinderVolumes-1881048477 None] Exception during message handling: FileNotFoundError: [Errno 2] No such file or directory: \u0027/opt/stack/data/cinder/conversion/tmpcg5_ezb2\u0027\nAug 01 18:30:11.453857 npaa6f6dca93f24 cinder-volume[102309]: ERROR oslo_messaging.rpc.server Traceback (most recent call last):\nAug 01 18:30:11.453857 npaa6f6dca93f24 cinder-volume[102309]: ERROR oslo_messaging.rpc.server   File \"/opt/stack/cinder/cinder/volume/drivers/rbd.py\", line 1138, in _create_encrypted_volume\nAug 01 18:30:11.453857 npaa6f6dca93f24 cinder-volume[102309]: ERROR oslo_messaging.rpc.server     self._execute(*create_cmd)\nAug 01 18:30:11.453857 npaa6f6dca93f24 cinder-volume[102309]: ERROR oslo_messaging.rpc.server   File \"/opt/stack/cinder/cinder/utils.py\", line 172, in execute\nAug 01 18:30:11.453857 npaa6f6dca93f24 cinder-volume[102309]: ERROR oslo_messaging.rpc.server     return processutils.execute(*cmd, **kwargs)\nAug 01 18:30:11.453857 npaa6f6dca93f24 cinder-volume[102309]: ERROR oslo_messaging.rpc.server            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nAug 01 18:30:11.453857 npaa6f6dca93f24 cinder-volume[102309]: ERROR oslo_messaging.rpc.server   File \"/opt/stack/data/venv/lib/python3.11/site-packages/oslo_concurrency/processutils.py\", line 388, in execute\nAug 01 18:30:11.453857 npaa6f6dca93f24 cinder-volume[102309]: ERROR oslo_messaging.rpc.server     raise ProcessExecutionError(exit_code\u003d_returncode,\nAug 01 18:30:11.453857 npaa6f6dca93f24 cinder-volume[102309]: ERROR oslo_messaging.rpc.server oslo_concurrency.processutils.ProcessExecutionError: Unexpected error while running command.\nAug 01 18:30:11.453857 npaa6f6dca93f24 cinder-volume[102309]: ERROR oslo_messaging.rpc.server Command: qemu-img create -f luks -o cipher-alg\u003daes-256,cipher-mode\u003dxts,ivgen-alg\u003dplain64 --object secret,id\u003dluks_sec,format\u003draw,file\u003d/opt/stack/data/cinder/conversion/tmp8v63j58m -o key-secret\u003d*** /opt/stack/data/cinder/conversion/tmpcg5_ezb2 1024M\nAug 01 18:30:11.453857 npaa6f6dca93f24 cinder-volume[102309]: ERROR oslo_messaging.rpc.server Exit code: 1\nAug 01 18:30:11.453857 npaa6f6dca93f24 cinder-volume[102309]: ERROR oslo_messaging.rpc.server Stdout: \"Formatting \u0027/opt/stack/data/cinder/conversion/tmpcg5_ezb2\u0027, fmt\u003dluks size\u003d1073741824 key-secret\u003d*** cipher-alg\u003daes-256 cipher-mode\u003dxts ivgen-alg\u003dplain64\\n\"\nAug 01 18:30:11.453857 npaa6f6dca93f24 cinder-volume[102309]: ERROR oslo_messaging.rpc.server Stderr: \u0027qemu-img: /opt/stack/data/cinder/conversion/tmpcg5_ezb2: Unable to get accurate CPU usage\\n\u0027\n```","commit_id":"077b6a7bdc8c4296937eb0d7d9c00908a8aa31f3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f0fab150fb9da630fc1072c05bd238f05e54b664","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":43,"id":"dfc0d2a1_526ede75","updated":"2025-08-01 17:34:04.000000000","message":"recheck gate is unblocked by https://review.opendev.org/c/openstack/openstacksdk/+/956369","commit_id":"077b6a7bdc8c4296937eb0d7d9c00908a8aa31f3"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"91fcb9c7c26f9ef532322fa5a6330775c4cb2a13","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":43,"id":"a6d10b3f_96fa8d95","updated":"2025-08-12 14:10:33.000000000","message":"recheck one failed test waiting on cinder and this patch shouldn\u0027t have any runtime effect yet","commit_id":"077b6a7bdc8c4296937eb0d7d9c00908a8aa31f3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ec2919b007d7062b975e04ea843fe0b0694067d2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":44,"id":"99b7a03f_38193cef","updated":"2025-08-13 14:16:56.000000000","message":"@dms@danplanet.com thanks for the rebase!","commit_id":"5cbe39aca96c7f2bfa3a49a9e964ae3f0123af81"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"12d01a7dff16806422bb82e08486f101a9c51883","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":44,"id":"55c4a13d_3fcb6109","updated":"2025-08-12 18:26:42.000000000","message":"recheck obviously unrelated job timeout\n\nRe-approving since I just fixed the pep8 error for gibi.","commit_id":"5cbe39aca96c7f2bfa3a49a9e964ae3f0123af81"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7fdbc4d76e1819b8e9697982f095ce52047f5a21","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":44,"id":"a4033c8b_1aff5e11","updated":"2025-08-13 13:42:29.000000000","message":"recheck same unrelated ceph job test failure","commit_id":"5cbe39aca96c7f2bfa3a49a9e964ae3f0123af81"}],"doc/source/conf.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d0020cdf0b31b9a185e128d8c38af71947ab2b5e","unresolved":true,"context_lines":[{"line_number":195,"context_line":"# nova.monkey_patch, which will do eventlet monkey patching to the sphinx"},{"line_number":196,"context_line":"# process. As well as being unnecessary and a bad idea, this breaks on"},{"line_number":197,"context_line":"# python3.6 (but not python3.7), so don\u0027t do that."},{"line_number":198,"context_line":"os.environ[\u0027OS_NOVA_DISABLE_EVENTLET_PATCHING\u0027] \u003d \u00271\u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"4893b418_3ceb8769","side":"PARENT","line":198,"updated":"2025-05-19 12:27:34.000000000","message":"based on my testing it is not needed any more, so I removed it to reduce complexity","commit_id":"1f9a3d8c7ea98cf847be85f89ca4ef1eb145266d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"73477de26713fb5a066928d76a3e231c3c1ce217","unresolved":false,"context_lines":[{"line_number":195,"context_line":"# nova.monkey_patch, which will do eventlet monkey patching to the sphinx"},{"line_number":196,"context_line":"# process. As well as being unnecessary and a bad idea, this breaks on"},{"line_number":197,"context_line":"# python3.6 (but not python3.7), so don\u0027t do that."},{"line_number":198,"context_line":"os.environ[\u0027OS_NOVA_DISABLE_EVENTLET_PATCHING\u0027] \u003d \u00271\u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"8dc1714f_8cf5fc7d","side":"PARENT","line":198,"in_reply_to":"0e2ce621_237c04be","updated":"2025-07-30 00:18:22.000000000","message":"Acknowledged","commit_id":"1f9a3d8c7ea98cf847be85f89ca4ef1eb145266d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"04763cce8fca7dfd9df07f724edf72cbea8e3d5f","unresolved":true,"context_lines":[{"line_number":195,"context_line":"# nova.monkey_patch, which will do eventlet monkey patching to the sphinx"},{"line_number":196,"context_line":"# process. As well as being unnecessary and a bad idea, this breaks on"},{"line_number":197,"context_line":"# python3.6 (but not python3.7), so don\u0027t do that."},{"line_number":198,"context_line":"os.environ[\u0027OS_NOVA_DISABLE_EVENTLET_PATCHING\u0027] \u003d \u00271\u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"0e2ce621_237c04be","side":"PARENT","line":198,"in_reply_to":"4893b418_3ceb8769","updated":"2025-07-22 09:20:03.000000000","message":"ack","commit_id":"1f9a3d8c7ea98cf847be85f89ca4ef1eb145266d"}],"nova/cmd/scheduler.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4416a8afa723dbb9e2bcd40a9e9421df72f22cef","unresolved":true,"context_lines":[{"line_number":38,"context_line":"    # mode for CI testing until I extend devstack to allow passing this"},{"line_number":39,"context_line":"    # env variable from zuul."},{"line_number":40,"context_line":"    import os"},{"line_number":41,"context_line":"    os.environ.set(\u0027OS_NOVA_DISABLE_EVENTLET_PATCHING\u0027, \u0027true\u0027)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    config.parse_args(sys.argv)"},{"line_number":44,"context_line":"    logging.setup(CONF, \"nova\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"0de434cf_ac26e3db","line":41,"updated":"2025-04-28 15:38:06.000000000","message":"This is now forcing CI on this patch to run nova-scheduler in threading mode. Lets see what CI things. Locally I was able schedule a VM with this.","commit_id":"babf24e138fbc016af5d738b4bd36fafafd90d5e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0fcd57f4b2775fceb47e1434a561e146e9966deb","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    # mode for CI testing until I extend devstack to allow passing this"},{"line_number":39,"context_line":"    # env variable from zuul."},{"line_number":40,"context_line":"    import os"},{"line_number":41,"context_line":"    os.environ.set(\u0027OS_NOVA_DISABLE_EVENTLET_PATCHING\u0027, \u0027true\u0027)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    config.parse_args(sys.argv)"},{"line_number":44,"context_line":"    logging.setup(CONF, \"nova\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"6dfa133e_cfca2f39","line":41,"in_reply_to":"0de434cf_ac26e3db","updated":"2025-06-03 13:07:07.000000000","message":"Done","commit_id":"babf24e138fbc016af5d738b4bd36fafafd90d5e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1361214bb985f1505bdad908dac96d870f553de3","unresolved":true,"context_lines":[{"line_number":38,"context_line":"    # mode for CI testing until I extend devstack to allow passing this"},{"line_number":39,"context_line":"    # env variable from zuul."},{"line_number":40,"context_line":"    import os"},{"line_number":41,"context_line":"    os.environ[\u0027OS_NOVA_DISABLE_EVENTLET_PATCHING\u0027] \u003d \u0027true\u0027"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    config.parse_args(sys.argv)"},{"line_number":44,"context_line":"    logging.setup(CONF, \"nova\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"6aaea33f_980b26b7","line":41,"updated":"2025-04-28 22:52:46.000000000","message":"oh this wont work.\n\nwe monkeypatch in nova/cmd/__init__.py so by the time we get here its tow late to disabel it.","commit_id":"8f4f47b32f7fef5585ce09ff9cd92fa499f7740f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6408eae5e046b969b55cd3d2008c9694b81142ea","unresolved":true,"context_lines":[{"line_number":38,"context_line":"    # mode for CI testing until I extend devstack to allow passing this"},{"line_number":39,"context_line":"    # env variable from zuul."},{"line_number":40,"context_line":"    import os"},{"line_number":41,"context_line":"    os.environ[\u0027OS_NOVA_DISABLE_EVENTLET_PATCHING\u0027] \u003d \u0027true\u0027"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    config.parse_args(sys.argv)"},{"line_number":44,"context_line":"    logging.setup(CONF, \"nova\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"e8bb618d_7c8a309f","line":41,"in_reply_to":"6aaea33f_980b26b7","updated":"2025-04-29 12:46:31.000000000","message":"yepp yepp","commit_id":"8f4f47b32f7fef5585ce09ff9cd92fa499f7740f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0fcd57f4b2775fceb47e1434a561e146e9966deb","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    # mode for CI testing until I extend devstack to allow passing this"},{"line_number":39,"context_line":"    # env variable from zuul."},{"line_number":40,"context_line":"    import os"},{"line_number":41,"context_line":"    os.environ[\u0027OS_NOVA_DISABLE_EVENTLET_PATCHING\u0027] \u003d \u0027true\u0027"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    config.parse_args(sys.argv)"},{"line_number":44,"context_line":"    logging.setup(CONF, \"nova\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"2e18ffb0_c35f9be3","line":41,"in_reply_to":"e8bb618d_7c8a309f","updated":"2025-06-03 13:07:07.000000000","message":"Done","commit_id":"8f4f47b32f7fef5585ce09ff9cd92fa499f7740f"}],"nova/monkey_patch.py":[{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"29ef1de3dac582d90ec801250a9087d7626eaa41","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        # NOTE(gibi): We were asked not to monkey patch. Let\u0027s enforce it by"},{"line_number":96,"context_line":"        # removing the possibility to monkey_patch accidentally"},{"line_number":97,"context_line":"        def poison(*args, **kwargs):"},{"line_number":98,"context_line":"            raise RuntimeError("},{"line_number":99,"context_line":"                \"The service is started with native threading via \""},{"line_number":100,"context_line":"                \"OS_NOVA_DISABLE_EVENTLET_PATCHING set to \u0027%s\u0027, but then the \""}],"source_content_type":"text/x-python","patch_set":26,"id":"d2c58cb8_a1e29721","line":97,"range":{"start_line":97,"start_character":7,"end_line":97,"end_character":18},"updated":"2025-06-11 13:15:46.000000000","message":"+1 that\u0027s a good idea.","commit_id":"27dcb06cb87a7d494587b3e9792afb22cb4470eb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"04763cce8fca7dfd9df07f724edf72cbea8e3d5f","unresolved":true,"context_lines":[{"line_number":90,"context_line":"        import oslo_service.backend as service"},{"line_number":91,"context_line":"        # NOTE(gibi): This will raise if the backend is already initialized"},{"line_number":92,"context_line":"        # with Eventlet"},{"line_number":93,"context_line":"        service.init_backend(service.BackendType.THREADING)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        # NOTE(gibi): We were asked not to monkey patch. Let\u0027s enforce it by"},{"line_number":96,"context_line":"        # removing the possibility to monkey_patch accidentally"}],"source_content_type":"text/x-python","patch_set":37,"id":"aaae5f4a_74dd82a1","line":93,"updated":"2025-07-22 09:20:03.000000000","message":"any reason why we set the oslo_service backend here and not in nova/rpc.py ?","commit_id":"d0f8d91cc99d2cee14dc4258433a93dd94e68dcb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"73477de26713fb5a066928d76a3e231c3c1ce217","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        import oslo_service.backend as service"},{"line_number":91,"context_line":"        # NOTE(gibi): This will raise if the backend is already initialized"},{"line_number":92,"context_line":"        # with Eventlet"},{"line_number":93,"context_line":"        service.init_backend(service.BackendType.THREADING)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        # NOTE(gibi): We were asked not to monkey patch. Let\u0027s enforce it by"},{"line_number":96,"context_line":"        # removing the possibility to monkey_patch accidentally"}],"source_content_type":"text/x-python","patch_set":37,"id":"a63d97c2_8eeb9d85","line":93,"in_reply_to":"271eae63_aa716df4","updated":"2025-07-30 00:18:22.000000000","message":"yes i think that is highly likely.\n\nwe may choose to explcitry init it somewhere but teh monkey_patch.py file at a minium will go away.\n\nwe coudl move thei service inint to nova main __init.py or somethign or the one in teh command module btu deleting it will proably work just as well.","commit_id":"d0f8d91cc99d2cee14dc4258433a93dd94e68dcb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"be1b67b31be7ebc4b5d005ba700d18c9b837c4e3","unresolved":true,"context_lines":[{"line_number":90,"context_line":"        import oslo_service.backend as service"},{"line_number":91,"context_line":"        # NOTE(gibi): This will raise if the backend is already initialized"},{"line_number":92,"context_line":"        # with Eventlet"},{"line_number":93,"context_line":"        service.init_backend(service.BackendType.THREADING)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        # NOTE(gibi): We were asked not to monkey patch. Let\u0027s enforce it by"},{"line_number":96,"context_line":"        # removing the possibility to monkey_patch accidentally"}],"source_content_type":"text/x-python","patch_set":37,"id":"271eae63_aa716df4","line":93,"in_reply_to":"3fba82b8_dfe155e0","updated":"2025-07-29 08:10:40.000000000","message":"yepp when we drop eventlet there will be a set of cleanup work to remove the abstraction we built to hide the eventlet specific code. I foresee that we can simply delete this code here once oslo.service changes the backend default to threading as then we can just rely on the first user of olso.service to initialize the backend automatically to the default threading mode.","commit_id":"d0f8d91cc99d2cee14dc4258433a93dd94e68dcb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"967cca9c2d6b27db74ca3e3944ddaec3104c15b2","unresolved":true,"context_lines":[{"line_number":90,"context_line":"        import oslo_service.backend as service"},{"line_number":91,"context_line":"        # NOTE(gibi): This will raise if the backend is already initialized"},{"line_number":92,"context_line":"        # with Eventlet"},{"line_number":93,"context_line":"        service.init_backend(service.BackendType.THREADING)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        # NOTE(gibi): We were asked not to monkey patch. Let\u0027s enforce it by"},{"line_number":96,"context_line":"        # removing the possibility to monkey_patch accidentally"}],"source_content_type":"text/x-python","patch_set":37,"id":"b6aac464_5dbf171e","line":93,"in_reply_to":"aaae5f4a_74dd82a1","updated":"2025-07-22 11:49:16.000000000","message":"There are two reasons:\n1) We need to set as early as possible as if any module tries to use oslo_service functionality it will automatically initialize the backed to the default eventlet backend. For example oslo.messaging when important triggers the initialization of the backend.\n\n2) We need to initialize the backend based on the fact if we are using eventlet or threading mode. As we have that information available here it make sense (to me) to do the oslo backend initialization here as well based on the same input (the env variable)","commit_id":"d0f8d91cc99d2cee14dc4258433a93dd94e68dcb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"1bb9912533dfa56b34eb63ffe31ddea01b8262a1","unresolved":true,"context_lines":[{"line_number":90,"context_line":"        import oslo_service.backend as service"},{"line_number":91,"context_line":"        # NOTE(gibi): This will raise if the backend is already initialized"},{"line_number":92,"context_line":"        # with Eventlet"},{"line_number":93,"context_line":"        service.init_backend(service.BackendType.THREADING)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        # NOTE(gibi): We were asked not to monkey patch. Let\u0027s enforce it by"},{"line_number":96,"context_line":"        # removing the possibility to monkey_patch accidentally"}],"source_content_type":"text/x-python","patch_set":37,"id":"3fba82b8_dfe155e0","line":93,"in_reply_to":"b6aac464_5dbf171e","updated":"2025-07-28 14:19:40.000000000","message":"I see, thanks for the clarifications.\n1/ yeah indeed, we already know that this module is called before we even start the RPC service : \nhttps://github.com/openstack/nova/blob/ed984eb756d3c38dd8012f4fa720c2495d4dfca9/nova/cmd/__init__.py#L16 so yeah this is the safer\n2/ well, not sure that\u0027s a problem, we could introspect monkey_patch.is_patched() in nova/rpc.py module \n\nAnyway, given that\u0027s here for a temporary period, I\u0027m cool with leaving it defined there, but once we drop the eventlet support (well, that will be in 1.5 years) we should migrate those knobs into the RPC service initialization.","commit_id":"d0f8d91cc99d2cee14dc4258433a93dd94e68dcb"}],"nova/rpc.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a3a7e846ae962fc4ce1f6837c0d4b79d3d5fe970","unresolved":true,"context_lines":[{"line_number":220,"context_line":"    return messaging.get_rpc_server(TRANSPORT,"},{"line_number":221,"context_line":"                                    target,"},{"line_number":222,"context_line":"                                    endpoints,"},{"line_number":223,"context_line":"                                    executor\u003d\u0027eventlet\u0027,"},{"line_number":224,"context_line":"                                    serializer\u003dserializer,"},{"line_number":225,"context_line":"                                    access_policy\u003daccess_policy)"},{"line_number":226,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7eecf720_841648c3","side":"PARENT","line":223,"updated":"2025-04-28 15:31:17.000000000","message":"oslo.messaging can automatically detect this, we will see if that it is stable enough but we can easily make the selection explicit here","commit_id":"6d59a524c8c61656ad69625e61962b37686353f8"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d0020cdf0b31b9a185e128d8c38af71947ab2b5e","unresolved":false,"context_lines":[{"line_number":220,"context_line":"    return messaging.get_rpc_server(TRANSPORT,"},{"line_number":221,"context_line":"                                    target,"},{"line_number":222,"context_line":"                                    endpoints,"},{"line_number":223,"context_line":"                                    executor\u003d\u0027eventlet\u0027,"},{"line_number":224,"context_line":"                                    serializer\u003dserializer,"},{"line_number":225,"context_line":"                                    access_policy\u003daccess_policy)"},{"line_number":226,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"964634c2_42ac50ba","side":"PARENT","line":223,"in_reply_to":"7eecf720_841648c3","updated":"2025-05-19 12:27:34.000000000","message":"Done","commit_id":"6d59a524c8c61656ad69625e61962b37686353f8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"1bb9912533dfa56b34eb63ffe31ddea01b8262a1","unresolved":false,"context_lines":[{"line_number":218,"context_line":"    else:"},{"line_number":219,"context_line":"        serializer \u003d RequestContextSerializer(serializer)"},{"line_number":220,"context_line":"    access_policy \u003d dispatcher.DefaultRPCAccessPolicy"},{"line_number":221,"context_line":"    exc \u003d \"threading\" if utils.concurrency_mode_threading() else \"eventlet\""},{"line_number":222,"context_line":"    return messaging.get_rpc_server(TRANSPORT,"},{"line_number":223,"context_line":"                                    target,"},{"line_number":224,"context_line":"                                    endpoints,"}],"source_content_type":"text/x-python","patch_set":40,"id":"67453ae2_4ee11b85","line":221,"updated":"2025-07-28 14:19:40.000000000","message":"++","commit_id":"c07e350eb8be7eb575d1d2cce61e52e39a66225a"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"2114e95989d1459fb2661ff1126d42bfb7324ede","unresolved":true,"context_lines":[{"line_number":218,"context_line":"    else:"},{"line_number":219,"context_line":"        serializer \u003d RequestContextSerializer(serializer)"},{"line_number":220,"context_line":"    access_policy \u003d dispatcher.DefaultRPCAccessPolicy"},{"line_number":221,"context_line":"    exc \u003d \"threading\" if utils.concurrency_mode_threading() else \"eventlet\""},{"line_number":222,"context_line":"    return messaging.get_rpc_server(TRANSPORT,"},{"line_number":223,"context_line":"                                    target,"},{"line_number":224,"context_line":"                                    endpoints,"}],"source_content_type":"text/x-python","patch_set":44,"id":"7736a7fc_f8b3641e","line":221,"range":{"start_line":221,"start_character":4,"end_line":221,"end_character":75},"updated":"2025-08-12 15:03:47.000000000","message":"oslo.messaging is capable to detect the appropriate backend (based on whether the threading module is patched or not). So alternatively we can drop the executor argument.","commit_id":"5cbe39aca96c7f2bfa3a49a9e964ae3f0123af81"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4e1b268e86e9752ff9f658c27f0c19ff013d8389","unresolved":true,"context_lines":[{"line_number":218,"context_line":"    else:"},{"line_number":219,"context_line":"        serializer \u003d RequestContextSerializer(serializer)"},{"line_number":220,"context_line":"    access_policy \u003d dispatcher.DefaultRPCAccessPolicy"},{"line_number":221,"context_line":"    exc \u003d \"threading\" if utils.concurrency_mode_threading() else \"eventlet\""},{"line_number":222,"context_line":"    return messaging.get_rpc_server(TRANSPORT,"},{"line_number":223,"context_line":"                                    target,"},{"line_number":224,"context_line":"                                    endpoints,"}],"source_content_type":"text/x-python","patch_set":44,"id":"ef4289e2_61e36248","line":221,"range":{"start_line":221,"start_character":4,"end_line":221,"end_character":75},"in_reply_to":"1c64b7d1_d0d2cc58","updated":"2026-01-13 08:50:43.000000000","message":"Yeah we will have a long list of cleanups when we remove eventlet. I\u0027m rather get explicit signal of this cleanup via syntax error than forget about it and keep the dead code.","commit_id":"5cbe39aca96c7f2bfa3a49a9e964ae3f0123af81"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"c299d3b1823bfb8e05e0cdf7a773243a811aed58","unresolved":true,"context_lines":[{"line_number":218,"context_line":"    else:"},{"line_number":219,"context_line":"        serializer \u003d RequestContextSerializer(serializer)"},{"line_number":220,"context_line":"    access_policy \u003d dispatcher.DefaultRPCAccessPolicy"},{"line_number":221,"context_line":"    exc \u003d \"threading\" if utils.concurrency_mode_threading() else \"eventlet\""},{"line_number":222,"context_line":"    return messaging.get_rpc_server(TRANSPORT,"},{"line_number":223,"context_line":"                                    target,"},{"line_number":224,"context_line":"                                    endpoints,"}],"source_content_type":"text/x-python","patch_set":44,"id":"1c64b7d1_d0d2cc58","line":221,"range":{"start_line":221,"start_character":4,"end_line":221,"end_character":75},"in_reply_to":"51300b32_2520f1a3","updated":"2026-01-11 01:36:56.000000000","message":"I think being explicit make sense and safe but it seems \u0027executor\u0027 arg itself is deprecated in oslo.messasging and maybe removed when we remove the eventlet support.-  https://review.opendev.org/c/openstack/oslo.messaging/+/933399\n\nIt is fine to be explicit till then and we can cleanup when oslo.messasging drop this arg.","commit_id":"5cbe39aca96c7f2bfa3a49a9e964ae3f0123af81"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ec2919b007d7062b975e04ea843fe0b0694067d2","unresolved":true,"context_lines":[{"line_number":218,"context_line":"    else:"},{"line_number":219,"context_line":"        serializer \u003d RequestContextSerializer(serializer)"},{"line_number":220,"context_line":"    access_policy \u003d dispatcher.DefaultRPCAccessPolicy"},{"line_number":221,"context_line":"    exc \u003d \"threading\" if utils.concurrency_mode_threading() else \"eventlet\""},{"line_number":222,"context_line":"    return messaging.get_rpc_server(TRANSPORT,"},{"line_number":223,"context_line":"                                    target,"},{"line_number":224,"context_line":"                                    endpoints,"}],"source_content_type":"text/x-python","patch_set":44,"id":"51300b32_2520f1a3","line":221,"range":{"start_line":221,"start_character":4,"end_line":221,"end_character":75},"in_reply_to":"7736a7fc_f8b3641e","updated":"2025-08-13 14:16:56.000000000","message":"yeah, I followed Sean suggestion to be explicit here.\n\nIt is especially useful in a unit / functional test situation where we cannot just assume (yet) that when oslo.messaging is imported we have the proper eventlet / threading setup in place.","commit_id":"5cbe39aca96c7f2bfa3a49a9e964ae3f0123af81"}],"nova/tests/unit/test_rpc.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"1bb9912533dfa56b34eb63ffe31ddea01b8262a1","unresolved":false,"context_lines":[{"line_number":271,"context_line":"        mock_get.assert_called_once_with(mock_TRANSPORT, tgt, ends,"},{"line_number":272,"context_line":"                                         executor\u003d\u0027threading\u0027, serializer\u003dser,"},{"line_number":273,"context_line":"                                         access_policy\u003daccess_policy)"},{"line_number":274,"context_line":"        self.assertEqual(\u0027server\u0027, server)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    @mock.patch.object(rpc, \u0027TRANSPORT\u0027)"},{"line_number":277,"context_line":"    @mock.patch.object(rpc, \u0027profiler\u0027, mock.Mock())"}],"source_content_type":"text/x-python","patch_set":40,"id":"d2c19d5a_c1a2f735","line":274,"updated":"2025-07-28 14:19:40.000000000","message":"++","commit_id":"c07e350eb8be7eb575d1d2cce61e52e39a66225a"}],"nova/tests/unit/test_utils.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2e635923ec1edd5ab49d12db726baa3a8764a4e4","unresolved":true,"context_lines":[{"line_number":1695,"context_line":""},{"line_number":1696,"context_line":"    @mock.patch(\u0027oslo_service.backend.init_backend\u0027)"},{"line_number":1697,"context_line":"    def test_threading_selected_monkey_patching_poisoned(self, init_backend):"},{"line_number":1698,"context_line":"        os.environ[\u0027OS_NOVA_DISABLE_EVENTLET_PATCHING\u0027] \u003d \"true\""},{"line_number":1699,"context_line":"        monkey_patch.patch()"},{"line_number":1700,"context_line":""},{"line_number":1701,"context_line":"        init_backend.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":25,"id":"6efde3a6_1a9247fe","line":1698,"updated":"2025-05-30 15:06:51.000000000","message":"This is baaaad as nobody cleans up after this so tests running in the same executor later will run with a half setup threading mode. Bad gibi. You should know better.\n\nI need to fix this to make the test stable in https://review.opendev.org/c/openstack/nova/+/950994/comment/501582a8_154396b8/","commit_id":"90f6fa779445048a680f49983f3e2207cc0990c2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0876fbb7ae1632b2b446dc062c38662d6afec8d2","unresolved":true,"context_lines":[{"line_number":1695,"context_line":""},{"line_number":1696,"context_line":"    @mock.patch(\u0027oslo_service.backend.init_backend\u0027)"},{"line_number":1697,"context_line":"    def test_threading_selected_monkey_patching_poisoned(self, init_backend):"},{"line_number":1698,"context_line":"        os.environ[\u0027OS_NOVA_DISABLE_EVENTLET_PATCHING\u0027] \u003d \"true\""},{"line_number":1699,"context_line":"        monkey_patch.patch()"},{"line_number":1700,"context_line":""},{"line_number":1701,"context_line":"        init_backend.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":25,"id":"d8363014_da415299","line":1698,"in_reply_to":"6efde3a6_1a9247fe","updated":"2025-05-30 15:29:40.000000000","message":"ya for this test case we shoudl mock the environment variable differently.\n\ni belive this will work \n\n```\n@mock.patch.dict(os.environ, {\"OS_NOVA_DISABLE_EVENTLET_PATCHING\": \"true\"}, clear\u003dTrue)\n```\n\nwe cant actully mix monkey_patched and non monkey patched test in the same invocation fo stestr since the test will be distriubuted psudo randomly btween the workser but for this case we do not need that.\n\nif we did want to have explcity un monkey pathced testss we need to run tehm with two invocations fo stester adn use --combine to extend the subunit db output of the fist invocation with the second like we do in tempest.","commit_id":"90f6fa779445048a680f49983f3e2207cc0990c2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"73477de26713fb5a066928d76a3e231c3c1ce217","unresolved":false,"context_lines":[{"line_number":1695,"context_line":""},{"line_number":1696,"context_line":"    @mock.patch(\u0027oslo_service.backend.init_backend\u0027)"},{"line_number":1697,"context_line":"    def test_threading_selected_monkey_patching_poisoned(self, init_backend):"},{"line_number":1698,"context_line":"        os.environ[\u0027OS_NOVA_DISABLE_EVENTLET_PATCHING\u0027] \u003d \"true\""},{"line_number":1699,"context_line":"        monkey_patch.patch()"},{"line_number":1700,"context_line":""},{"line_number":1701,"context_line":"        init_backend.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":25,"id":"d0e65a4e_99cf20af","line":1698,"in_reply_to":"851e4e9f_e55a8a58","updated":"2025-07-30 00:18:22.000000000","message":"Acknowledged","commit_id":"90f6fa779445048a680f49983f3e2207cc0990c2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c22b1460e2418ab8d8e134507017e893d20859a1","unresolved":true,"context_lines":[{"line_number":1695,"context_line":""},{"line_number":1696,"context_line":"    @mock.patch(\u0027oslo_service.backend.init_backend\u0027)"},{"line_number":1697,"context_line":"    def test_threading_selected_monkey_patching_poisoned(self, init_backend):"},{"line_number":1698,"context_line":"        os.environ[\u0027OS_NOVA_DISABLE_EVENTLET_PATCHING\u0027] \u003d \"true\""},{"line_number":1699,"context_line":"        monkey_patch.patch()"},{"line_number":1700,"context_line":""},{"line_number":1701,"context_line":"        init_backend.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":25,"id":"851e4e9f_e55a8a58","line":1698,"in_reply_to":"d8363014_da415299","updated":"2025-06-03 12:59:59.000000000","message":"yepp. I actually needed two fixes:\n* mocking os.environ properly as you suggested. (The clear\u003dTrue is not need as that would clear the dict *before* the new value is applied, the cleanup after the testcase happens independently from the clear flag)\n* restore the monkey_patch.MONKEY_PATCHED overwritten by the test setup/test case.\n\nNow the two test cases passing after each other in the latest patch. If you want to reproduce the problem run this two test case serially in a single executor \n```\nnova.tests.unit.test_utils.OsloServiceBackendSelectionTestCase.test_threading_selected_monkey_patching_poisoned\nnova.tests.unit.virt.libvirt.test_driver.CacheConcurrencyTestCase.test_different_fname_concurrency\n```\nWithout the fix the second one will fail. If only the second is run the it passes. With the fix now the two test cases pass together as well.","commit_id":"90f6fa779445048a680f49983f3e2207cc0990c2"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"29ef1de3dac582d90ec801250a9087d7626eaa41","unresolved":false,"context_lines":[{"line_number":1706,"context_line":"        init_backend.assert_called_once_with("},{"line_number":1707,"context_line":"            oslo_backend.BackendType.THREADING)"},{"line_number":1708,"context_line":"        import eventlet"},{"line_number":1709,"context_line":"        ex \u003d self.assertRaises(RuntimeError, eventlet.monkey_patch)"},{"line_number":1710,"context_line":"        self.assertEqual("},{"line_number":1711,"context_line":"            \"The service is started with native threading via \""},{"line_number":1712,"context_line":"            \"OS_NOVA_DISABLE_EVENTLET_PATCHING set to \u0027true\u0027, but then the \""}],"source_content_type":"text/x-python","patch_set":26,"id":"c6b1784f_096aa4c7","line":1709,"range":{"start_line":1709,"start_character":8,"end_line":1709,"end_character":67},"updated":"2025-06-11 13:15:46.000000000","message":"Note to myself: this check the poison. 🤮","commit_id":"27dcb06cb87a7d494587b3e9792afb22cb4470eb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"1bb9912533dfa56b34eb63ffe31ddea01b8262a1","unresolved":false,"context_lines":[{"line_number":1721,"context_line":"            \"The service is started with native threading via \""},{"line_number":1722,"context_line":"            \"OS_NOVA_DISABLE_EVENTLET_PATCHING set to \u0027true\u0027, but then the \""},{"line_number":1723,"context_line":"            \"service tried to call eventlet.monkey_patch(). This is a bug.\","},{"line_number":1724,"context_line":"            str(ex))"}],"source_content_type":"text/x-python","patch_set":40,"id":"2c70af3b_883426e9","line":1724,"updated":"2025-07-28 14:19:40.000000000","message":"Thanks a lot !","commit_id":"c07e350eb8be7eb575d1d2cce61e52e39a66225a"}],"releasenotes/notes/threaded-nova-scheduler-dd4649b987f33025.yaml":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"1bb9912533dfa56b34eb63ffe31ddea01b8262a1","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The nova-scheduler now can be run in native threading mode instead"},{"line_number":5,"context_line":"    of with eventlet. This is an experimental feature that is disabled by"},{"line_number":6,"context_line":"    default. Please read the"},{"line_number":7,"context_line":"    `concurrency \u003chttps://docs.openstack.org/nova/latest/admin/concurrency.html\u003e`__"}],"source_content_type":"text/x-yaml","patch_set":40,"id":"8aaab870_5bf12085","line":4,"range":{"start_line":4,"start_character":23,"end_line":4,"end_character":30},"updated":"2025-07-28 14:19:40.000000000","message":"femtonit : can now be run","commit_id":"c07e350eb8be7eb575d1d2cce61e52e39a66225a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"73477de26713fb5a066928d76a3e231c3c1ce217","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The nova-scheduler now can be run in native threading mode instead"},{"line_number":5,"context_line":"    of with eventlet. This is an experimental feature that is disabled by"},{"line_number":6,"context_line":"    default. Please read the"},{"line_number":7,"context_line":"    `concurrency \u003chttps://docs.openstack.org/nova/latest/admin/concurrency.html\u003e`__"}],"source_content_type":"text/x-yaml","patch_set":40,"id":"bf525099_e7a38d60","line":4,"range":{"start_line":4,"start_character":23,"end_line":4,"end_character":30},"in_reply_to":"8aaab870_5bf12085","updated":"2025-07-30 00:18:22.000000000","message":"both are corect to my ear btu im irish so what do i know 😊","commit_id":"c07e350eb8be7eb575d1d2cce61e52e39a66225a"}],"requirements.txt":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9e9ab1059d4e69a80812e527aa5f442abbba53e8","unresolved":true,"context_lines":[{"line_number":44,"context_line":"oslo.policy\u003e\u003d4.5.0 # Apache-2.0"},{"line_number":45,"context_line":"oslo.privsep\u003e\u003d2.6.2 # Apache-2.0"},{"line_number":46,"context_line":"oslo.i18n\u003e\u003d5.1.0 # Apache-2.0"},{"line_number":47,"context_line":"oslo.service\u003e\u003d4.2.0 # Apache-2.0"},{"line_number":48,"context_line":"rfc3986\u003e\u003d1.2.0 # Apache-2.0"},{"line_number":49,"context_line":"oslo.middleware\u003e\u003d3.31.0 # Apache-2.0"},{"line_number":50,"context_line":"psutil\u003e\u003d3.2.2 # BSD"}],"source_content_type":"text/plain","patch_set":23,"id":"be26f9e8_3d8dd584","line":47,"updated":"2025-05-27 12:04:07.000000000","message":"lets try asking for the optional threading backend here \n`oslo.service[threading]` should work based on \nhttps://www.python.org/dev/peps/pep-0508/#extras","commit_id":"27bb976996c40775a89ec3f06710e561ebd362cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"214ba9c4261d0c4e7ed3f88ccbbd4ae0ef9f4210","unresolved":true,"context_lines":[{"line_number":44,"context_line":"oslo.policy\u003e\u003d4.5.0 # Apache-2.0"},{"line_number":45,"context_line":"oslo.privsep\u003e\u003d2.6.2 # Apache-2.0"},{"line_number":46,"context_line":"oslo.i18n\u003e\u003d5.1.0 # Apache-2.0"},{"line_number":47,"context_line":"oslo.service\u003e\u003d4.2.0 # Apache-2.0"},{"line_number":48,"context_line":"rfc3986\u003e\u003d1.2.0 # Apache-2.0"},{"line_number":49,"context_line":"oslo.middleware\u003e\u003d3.31.0 # Apache-2.0"},{"line_number":50,"context_line":"psutil\u003e\u003d3.2.2 # BSD"}],"source_content_type":"text/plain","patch_set":23,"id":"44c95902_d160714d","line":47,"in_reply_to":"321e1c60_c91dd3cd","updated":"2025-05-27 12:48:46.000000000","message":"checking it now on CI, as locally it works","commit_id":"27bb976996c40775a89ec3f06710e561ebd362cd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"99c0feb176f63959cf1883a72563e9b229ac536a","unresolved":false,"context_lines":[{"line_number":44,"context_line":"oslo.policy\u003e\u003d4.5.0 # Apache-2.0"},{"line_number":45,"context_line":"oslo.privsep\u003e\u003d2.6.2 # Apache-2.0"},{"line_number":46,"context_line":"oslo.i18n\u003e\u003d5.1.0 # Apache-2.0"},{"line_number":47,"context_line":"oslo.service\u003e\u003d4.2.0 # Apache-2.0"},{"line_number":48,"context_line":"rfc3986\u003e\u003d1.2.0 # Apache-2.0"},{"line_number":49,"context_line":"oslo.middleware\u003e\u003d3.31.0 # Apache-2.0"},{"line_number":50,"context_line":"psutil\u003e\u003d3.2.2 # BSD"}],"source_content_type":"text/plain","patch_set":23,"id":"20711f27_33d9cc0f","line":47,"in_reply_to":"44c95902_d160714d","updated":"2025-05-27 13:50:50.000000000","message":"I works in CI too and requirements check job also passed \nhttps://zuul.opendev.org/t/openstack/build/ab610d74de4e4adcbc22f188431fbfb9/log/job-output.txt#2496","commit_id":"27bb976996c40775a89ec3f06710e561ebd362cd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"873bb4a703ef82364709c783cde4ae5c433cbc5d","unresolved":true,"context_lines":[{"line_number":44,"context_line":"oslo.policy\u003e\u003d4.5.0 # Apache-2.0"},{"line_number":45,"context_line":"oslo.privsep\u003e\u003d2.6.2 # Apache-2.0"},{"line_number":46,"context_line":"oslo.i18n\u003e\u003d5.1.0 # Apache-2.0"},{"line_number":47,"context_line":"oslo.service\u003e\u003d4.2.0 # Apache-2.0"},{"line_number":48,"context_line":"rfc3986\u003e\u003d1.2.0 # Apache-2.0"},{"line_number":49,"context_line":"oslo.middleware\u003e\u003d3.31.0 # Apache-2.0"},{"line_number":50,"context_line":"psutil\u003e\u003d3.2.2 # BSD"}],"source_content_type":"text/plain","patch_set":23,"id":"321e1c60_c91dd3cd","line":47,"in_reply_to":"be26f9e8_3d8dd584","updated":"2025-05-27 12:28:51.000000000","message":"so that might/should work but it might fail our requireemtns check logic because it wont match whats in the requirement repo.\n\nmaking the threading backend an extra is kind of quetionable but we may need to explore using cycolton or whatver its caled as a direct reuirement.","commit_id":"27bb976996c40775a89ec3f06710e561ebd362cd"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"29ef1de3dac582d90ec801250a9087d7626eaa41","unresolved":false,"context_lines":[{"line_number":44,"context_line":"oslo.policy\u003e\u003d4.5.0 # Apache-2.0"},{"line_number":45,"context_line":"oslo.privsep\u003e\u003d2.6.2 # Apache-2.0"},{"line_number":46,"context_line":"oslo.i18n\u003e\u003d5.1.0 # Apache-2.0"},{"line_number":47,"context_line":"oslo.service[threading]\u003e\u003d4.2.0 # Apache-2.0"},{"line_number":48,"context_line":"rfc3986\u003e\u003d1.2.0 # Apache-2.0"},{"line_number":49,"context_line":"oslo.middleware\u003e\u003d3.31.0 # Apache-2.0"},{"line_number":50,"context_line":"psutil\u003e\u003d3.2.2 # BSD"}],"source_content_type":"text/plain","patch_set":26,"id":"ab95cb05_cbcd1ed8","line":47,"range":{"start_line":47,"start_character":12,"end_line":47,"end_character":31},"updated":"2025-06-11 13:15:46.000000000","message":"note to myself:\nThis looks at setup.cfg and brings the following dependencies.\nhttps://github.com/openstack/oslo.service/blob/57ce3982d09f789d8804139dbc9bedcb25e9f30b/setup.cfg#L26C1-L28C20","commit_id":"27dcb06cb87a7d494587b3e9792afb22cb4470eb"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"29ef1de3dac582d90ec801250a9087d7626eaa41","unresolved":true,"context_lines":[{"line_number":60,"context_line":"retrying\u003e\u003d1.3.3 # Apache-2.0"},{"line_number":61,"context_line":"os-service-types\u003e\u003d1.7.0 # Apache-2.0"},{"line_number":62,"context_line":"python-dateutil\u003e\u003d2.7.0 # BSD"},{"line_number":63,"context_line":"futurist\u003e\u003d1.8.0 # Apache-2.0"},{"line_number":64,"context_line":"openstacksdk\u003e\u003d4.4.0 # Apache-2.0"},{"line_number":65,"context_line":"PyYAML\u003e\u003d5.1 # MIT"}],"source_content_type":"text/plain","patch_set":26,"id":"29f45c22_8c453b5d","line":63,"range":{"start_line":63,"start_character":0,"end_line":63,"end_character":28},"updated":"2025-06-11 13:15:46.000000000","message":"Maybe we should remove this to avoid discrepancies, as it is provided by oslo.service dependencies.","commit_id":"27dcb06cb87a7d494587b3e9792afb22cb4470eb"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"57355be03ef6cec01bd7bfe0aa662d2486ec811b","unresolved":true,"context_lines":[{"line_number":60,"context_line":"retrying\u003e\u003d1.3.3 # Apache-2.0"},{"line_number":61,"context_line":"os-service-types\u003e\u003d1.7.0 # Apache-2.0"},{"line_number":62,"context_line":"python-dateutil\u003e\u003d2.7.0 # BSD"},{"line_number":63,"context_line":"futurist\u003e\u003d1.8.0 # Apache-2.0"},{"line_number":64,"context_line":"openstacksdk\u003e\u003d4.4.0 # Apache-2.0"},{"line_number":65,"context_line":"PyYAML\u003e\u003d5.1 # MIT"}],"source_content_type":"text/plain","patch_set":26,"id":"b1384e53_1292ee85","line":63,"range":{"start_line":63,"start_character":0,"end_line":63,"end_character":28},"in_reply_to":"29f45c22_8c453b5d","updated":"2025-06-13 13:11:52.000000000","message":"nova directly depends on futurist now not just indirectly via oslo.service so we should mark that direct dependency here. \n\nWe do not list cotyledon here as nova does not directly depends on it, just indirectly via oslo.service.","commit_id":"27dcb06cb87a7d494587b3e9792afb22cb4470eb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"73477de26713fb5a066928d76a3e231c3c1ce217","unresolved":true,"context_lines":[{"line_number":60,"context_line":"retrying\u003e\u003d1.3.3 # Apache-2.0"},{"line_number":61,"context_line":"os-service-types\u003e\u003d1.7.0 # Apache-2.0"},{"line_number":62,"context_line":"python-dateutil\u003e\u003d2.7.0 # BSD"},{"line_number":63,"context_line":"futurist\u003e\u003d1.8.0 # Apache-2.0"},{"line_number":64,"context_line":"openstacksdk\u003e\u003d4.4.0 # Apache-2.0"},{"line_number":65,"context_line":"PyYAML\u003e\u003d5.1 # MIT"}],"source_content_type":"text/plain","patch_set":26,"id":"0d10ea68_3fc79f55","line":63,"range":{"start_line":63,"start_character":0,"end_line":63,"end_character":28},"in_reply_to":"955a64f6_bfb204fa","updated":"2025-07-30 00:18:22.000000000","message":"it was yes we were relying on it transitivly before in nova\nwe are better off declaring our direct deps as we will break otherwise if oslo ever drops it.\n\nand +1 on not listing cotyledon we do not use it directly and we should avoid doing so in the future.","commit_id":"27dcb06cb87a7d494587b3e9792afb22cb4470eb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"1bb9912533dfa56b34eb63ffe31ddea01b8262a1","unresolved":true,"context_lines":[{"line_number":60,"context_line":"retrying\u003e\u003d1.3.3 # Apache-2.0"},{"line_number":61,"context_line":"os-service-types\u003e\u003d1.7.0 # Apache-2.0"},{"line_number":62,"context_line":"python-dateutil\u003e\u003d2.7.0 # BSD"},{"line_number":63,"context_line":"futurist\u003e\u003d1.8.0 # Apache-2.0"},{"line_number":64,"context_line":"openstacksdk\u003e\u003d4.4.0 # Apache-2.0"},{"line_number":65,"context_line":"PyYAML\u003e\u003d5.1 # MIT"}],"source_content_type":"text/plain","patch_set":26,"id":"955a64f6_bfb204fa","line":63,"range":{"start_line":63,"start_character":0,"end_line":63,"end_character":28},"in_reply_to":"b1384e53_1292ee85","updated":"2025-07-28 14:19:40.000000000","message":"Agreed with gibi here, futurist is a direct dependency for now (and actually maybe for a long time)","commit_id":"27dcb06cb87a7d494587b3e9792afb22cb4470eb"}]}
