)]}'
{".zuul.yaml":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6d8f1f053ba576ed82b237ce3bc2675059dc3377","unresolved":true,"context_lines":[{"line_number":268,"context_line":"          NOVA_VNC_ENABLED: true"},{"line_number":269,"context_line":"          NOVA_SPICE_ENABLED: true"},{"line_number":270,"context_line":"          NOVNC_FROM_PACKAGE: false"},{"line_number":271,"context_line":"          \u0027SYSTEMD_ENV_VARS[\"n-cpu\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dfalse"},{"line_number":272,"context_line":"        devstack_services:"},{"line_number":273,"context_line":"          # Disable OVN services"},{"line_number":274,"context_line":"          br-ex-tcpdump: false"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"9ad776fa_e0b1cda4","line":271,"updated":"2026-06-18 12:10:30.000000000","message":"do we still need this?","commit_id":"68c37a985ba75459e53ad050352d276ac24af041"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"4cc3be031a518052826b7d1729ad6ed0d77c44c7","unresolved":false,"context_lines":[{"line_number":268,"context_line":"          NOVA_VNC_ENABLED: true"},{"line_number":269,"context_line":"          NOVA_SPICE_ENABLED: true"},{"line_number":270,"context_line":"          NOVNC_FROM_PACKAGE: false"},{"line_number":271,"context_line":"          \u0027SYSTEMD_ENV_VARS[\"n-cpu\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dfalse"},{"line_number":272,"context_line":"        devstack_services:"},{"line_number":273,"context_line":"          # Disable OVN services"},{"line_number":274,"context_line":"          br-ex-tcpdump: false"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"40d8a2bc_c3daf97b","line":271,"in_reply_to":"9ad776fa_e0b1cda4","updated":"2026-06-22 11:26:44.000000000","message":"Done","commit_id":"68c37a985ba75459e53ad050352d276ac24af041"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a866f0117f507f37d9336f48dfa6243e6141722b","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"b8cf5356_2e1feddb","updated":"2026-06-17 15:16:39.000000000","message":"Nice, if this works then we are on track.\n\nLets update our docs https://docs.openstack.org/nova/latest/admin/concurrency.html and add a reno","commit_id":"f0c3d0585a1c4ebc2f8b9eababbf080845864fac"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6d8f1f053ba576ed82b237ce3bc2675059dc3377","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"cbf653d8_2a7b62d0","updated":"2026-06-18 12:10:30.000000000","message":"recheck nova-next timeout\n\nAnd I have a couple of requests inline.","commit_id":"68c37a985ba75459e53ad050352d276ac24af041"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a209e6c90bb43d1d5211d99451ef647f0de89d27","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"6da81edd_ddf71ccf","updated":"2026-06-24 13:06:11.000000000","message":"In a local devstack I see\n```\nJun 24 12:57:32 aio devstack@n-api.service[950651]: Traceback (most recent call last):\nJun 24 12:57:32 aio devstack@n-api.service[950651]:   File \"/opt/stack/nova/nova/wsgi/osapi_compute.py\", line 15, in \u003cmodule\u003e\nJun 24 12:57:32 aio devstack@n-api.service[950651]:     from nova import monkey_patch; monkey_patch.patch(backend\u003d\u0027threading\u0027)  # noqa\nJun 24 12:57:32 aio devstack@n-api.service[950651]:                                    ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^\nJun 24 12:57:32 aio devstack@n-api.service[950651]:   File \"/opt/stack/nova/nova/monkey_patch.py\", line 141, in patch\nJun 24 12:57:32 aio devstack@n-api.service[950651]:     poison_eventlet()\nJun 24 12:57:32 aio devstack@n-api.service[950651]:     ~~~~~~~~~~~~~~~^^\nJun 24 12:57:32 aio devstack@n-api.service[950651]:   File \"/opt/stack/nova/nova/monkey_patch.py\", line 157, in poison_eventlet\nJun 24 12:57:32 aio devstack@n-api.service[950651]:     raise RuntimeError(\nJun 24 12:57:32 aio devstack@n-api.service[950651]:     ...\u003c4 lines\u003e...\nJun 24 12:57:32 aio devstack@n-api.service[950651]:         % os.environ.get(\u0027OS_NOVA_DISABLE_EVENTLET_PATCHING\u0027, \u0027\u0027))\nJun 24 12:57:32 aio devstack@n-api.service[950651]: RuntimeError: The service is started with native threading via OS_NOVA_DISABLE_EVENTLET_PATCHING set to \u0027\u0027, but eventlet library imported early preventing the s\u003e\nJun 24 12:57:32 aio devstack@n-api.service[950651]: unable to load app 0 (mountpoint\u003d\u0027\u0027) (callable not found or import error)\nJun 24 12:57:32 aio devstack@n-api.service[950651]: *** no app loaded. going in full dynamic mode ***\nJun 24 12:57:32 aio devstack@n-api.service[950652]: Traceback (most recent call last):\nJun 24 12:57:32 aio devstack@n-api.service[950652]:   File \"/opt/stack/nova/nova/wsgi/osapi_compute.py\", line 15, in \u003cmodule\u003e\nJun 24 12:57:32 aio devstack@n-api.service[950652]:     from nova import monkey_patch; monkey_patch.patch(backend\u003d\u0027threading\u0027)  # noqa\nJun 24 12:57:32 aio devstack@n-api.service[950652]:                                    ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^\nJun 24 12:57:32 aio devstack@n-api.service[950652]:   File \"/opt/stack/nova/nova/monkey_patch.py\", line 141, in patch\nJun 24 12:57:32 aio devstack@n-api.service[950652]:     poison_eventlet()\nJun 24 12:57:32 aio devstack@n-api.service[950652]:     ~~~~~~~~~~~~~~~^^\nJun 24 12:57:32 aio devstack@n-api.service[950652]:   File \"/opt/stack/nova/nova/monkey_patch.py\", line 157, in poison_eventlet\nJun 24 12:57:32 aio devstack@n-api.service[950652]:     raise RuntimeError(\nJun 24 12:57:32 aio devstack@n-api.service[950652]:     ...\u003c4 lines\u003e...\nJun 24 12:57:32 aio devstack@n-api.service[950652]:         % os.environ.get(\u0027OS_NOVA_DISABLE_EVENTLET_PATCHING\u0027, \u0027\u0027))\nJun 24 12:57:32 aio devstack@n-api.service[950652]: RuntimeError: The service is started with native threading via OS_NOVA_DISABLE_EVENTLET_PATCHING set to \u0027\u0027, but eventlet library imported early preventing the s\u003e\n```\nSo something pulls in eventlet now. I guess based on comparing to the previous ps it is like the base config option file","commit_id":"9f8d3b413dcb82ed0430a26f3f96cddafe9894ae"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6b0331fef4a1d73f5fa23f83fa0753020921623e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"b0257986_5c8cbe3e","updated":"2026-06-24 12:55:40.000000000","message":"recheck there are couple of strange errors like\n```\n+ lib/nova:init_nova:864                   :   /opt/stack/data/venv/bin/nova-manage --config-file /etc/nova/nova.conf api_db sync\n/opt/stack/data/venv/lib/python3.12/site-packages/oslo_utils/importutils.py:77: EventletDeprecationWarning: \nEventlet is deprecated. It is currently being maintained in bugfix mode, and\nwe strongly recommend against using it for new projects.\n\nIf you are already using Eventlet, we recommend migrating to a different\nframework.  For more detail see\nhttps://eventlet.readthedocs.io/en/latest/asyncio/migration.html\n\n  __import__(import_str)\nusage: nova-manage [-h] [--config-dir DIR] [--config-file PATH]\n                   [--shell_completion SHELL_COMPLETION]\nnova-manage: error: unrecognized arguments: api_db sync\n+ inc/async:async_inner:68                 :   rc\u003d2\n\n```","commit_id":"9f8d3b413dcb82ed0430a26f3f96cddafe9894ae"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e67144460ea5998b0754112c185a919eeece3ab2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"3e634fd0_3ecb673a","updated":"2026-06-24 15:13:30.000000000","message":"This works for me locally. Thanks!\n\nLets try to backport this to Gazpacho as well :)","commit_id":"70848d8fbc2367566ab629df12fbc42a05246e28"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b6753997bb662cb22c4245c1dc402a2d87f3f830","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"1628ab18_fd8f25a7","updated":"2026-06-29 15:45:25.000000000","message":"recheck nova-next random failure?","commit_id":"7d0a7728a579b99eeeb6eab4b4acb6533c3fd2f6"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"19522d4ef1d6837d669fd0d305b61a91a4949ab2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"6f297681_2662ab22","updated":"2026-07-01 13:33:42.000000000","message":"recheck","commit_id":"d4a261891099c21ea766774e3af2dd243d33d872"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d9f8e4f1ce4420cac3bff952d0aec701e0f0b509","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"ffd6b989_53046d77","updated":"2026-07-06 14:01:06.000000000","message":"Thanks. Looks good.","commit_id":"41a24caee37c5921e137a478d1b3c82a32b56bd9"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"7bbe2a866f794ca7e84a450c42fd63e56483c1b4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"33e69b04_1f125800","updated":"2026-07-06 14:54:31.000000000","message":"good addition, better than the existing way","commit_id":"41a24caee37c5921e137a478d1b3c82a32b56bd9"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"35b934f8ea4a8d2455ac1c47d0ee94f28c097971","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"8fa84ee9_d8c3c0ec","updated":"2026-07-06 16:10:14.000000000","message":"lgtm, a small correction in releasenotes which can be fixed in followup","commit_id":"41a24caee37c5921e137a478d1b3c82a32b56bd9"}],"doc/source/admin/concurrency.rst":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"7bbe2a866f794ca7e84a450c42fd63e56483c1b4","unresolved":false,"context_lines":[{"line_number":74,"context_line":"This option is read very early at startup, before oslo.config is fully"},{"line_number":75,"context_line":"initialised, so it takes effect before any other imports occur. The"},{"line_number":76,"context_line":"``OS_NOVA_DISABLE_EVENTLET_PATCHING`` environment variable takes precedence"},{"line_number":77,"context_line":"over this option."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Using the ``OS_NOVA_DISABLE_EVENTLET_PATCHING`` environment variable"},{"line_number":80,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":12,"id":"e89229a3_62bafa06","line":77,"updated":"2026-07-06 14:54:31.000000000","message":"excellent wording","commit_id":"41a24caee37c5921e137a478d1b3c82a32b56bd9"}],"nova/conf/__init__.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c23363344d310d2c88fd40d1934e61118c8b98d9","unresolved":true,"context_lines":[{"line_number":22,"context_line":"from nova.conf import api"},{"line_number":23,"context_line":"from nova.conf import availability_zone"},{"line_number":24,"context_line":"from nova.conf import base"},{"line_number":25,"context_line":"from nova.conf import cache"},{"line_number":26,"context_line":"from nova.conf import cinder"},{"line_number":27,"context_line":"from nova.conf import compute"},{"line_number":28,"context_line":"from nova.conf import conductor"}],"source_content_type":"text/x-python","patch_set":3,"id":"b5f2c3b9_42bc9ec7","line":25,"updated":"2026-06-24 13:17:26.000000000","message":"this pulls the eventlet early. nova.conf is imported when we import nova.conf.base so this module level bunch of import happenes. \n\n(cache -\u003e oslo_log -\u003e oslo_serialization -\u003e ...)\n\nSo either we go back to your original idea and define the config option inline in the mockey_patch. Or create a totally separate config definition that is importable without importing this whole bunch of things. I think we can go with a the former. Sorry for pushing you into a dead end.\n(lets have a comment there why we cannot put this config option to the normal place)","commit_id":"9f8d3b413dcb82ed0430a26f3f96cddafe9894ae"}],"nova/conf/base.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a866f0117f507f37d9336f48dfa6243e6141722b","unresolved":true,"context_lines":[{"line_number":93,"context_line":"            (\u0027auto\u0027, \u0027Use the per-binary default concurrency backend. \u0027"},{"line_number":94,"context_line":"                    \u0027nova-compute and nova-conductor default to native \u0027"},{"line_number":95,"context_line":"                    \u0027threading; all other Nova services default to eventlet. \u0027"},{"line_number":96,"context_line":"                    \u0027This is the same as leaving the option unset.\u0027),"},{"line_number":97,"context_line":"            (\u0027threading\u0027, \u0027Start the service with native threading. \u0027"},{"line_number":98,"context_line":"                        \u0027Eventlet monkey patching is not applied.\u0027),"},{"line_number":99,"context_line":"            (\u0027eventlet\u0027, \u0027Start the service with eventlet coroutine-based \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"acdf99e5_bda25280","line":96,"updated":"2026-06-17 15:16:39.000000000","message":"I think we the option text is incorrect. We are defaulting everything to threading on master except the novnc and CLI entry points.","commit_id":"f0c3d0585a1c4ebc2f8b9eababbf080845864fac"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"a34e1e5532d1aac2c8bccd00e7deb94d4c2d586b","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            (\u0027auto\u0027, \u0027Use the per-binary default concurrency backend. \u0027"},{"line_number":94,"context_line":"                    \u0027nova-compute and nova-conductor default to native \u0027"},{"line_number":95,"context_line":"                    \u0027threading; all other Nova services default to eventlet. \u0027"},{"line_number":96,"context_line":"                    \u0027This is the same as leaving the option unset.\u0027),"},{"line_number":97,"context_line":"            (\u0027threading\u0027, \u0027Start the service with native threading. \u0027"},{"line_number":98,"context_line":"                        \u0027Eventlet monkey patching is not applied.\u0027),"},{"line_number":99,"context_line":"            (\u0027eventlet\u0027, \u0027Start the service with eventlet coroutine-based \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"6a774ff6_b6dac19d","line":96,"in_reply_to":"acdf99e5_bda25280","updated":"2026-06-18 10:41:10.000000000","message":"Done","commit_id":"f0c3d0585a1c4ebc2f8b9eababbf080845864fac"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a866f0117f507f37d9336f48dfa6243e6141722b","unresolved":true,"context_lines":[{"line_number":113,"context_line":"  When set to ``auto``, each Nova service binary applies its own built-in"},{"line_number":114,"context_line":"  default: nova-compute and nova-conductor use native threading; all other"},{"line_number":115,"context_line":"  services use eventlet. Setting an explicit value overrides that per-binary"},{"line_number":116,"context_line":"  default for every service that reads this config file."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"  The environment variable ``OS_NOVA_DISABLE_EVENTLET_PATCHING`` takes"},{"line_number":119,"context_line":"  precedence over this option when both are set."}],"source_content_type":"text/x-python","patch_set":1,"id":"83a598ca_680af18c","line":116,"updated":"2026-06-17 15:16:39.000000000","message":"ditto. Make sure we are synced with https://docs.openstack.org/nova/latest/admin/concurrency.html\n\nOr even link to this doc","commit_id":"f0c3d0585a1c4ebc2f8b9eababbf080845864fac"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"a34e1e5532d1aac2c8bccd00e7deb94d4c2d586b","unresolved":false,"context_lines":[{"line_number":113,"context_line":"  When set to ``auto``, each Nova service binary applies its own built-in"},{"line_number":114,"context_line":"  default: nova-compute and nova-conductor use native threading; all other"},{"line_number":115,"context_line":"  services use eventlet. Setting an explicit value overrides that per-binary"},{"line_number":116,"context_line":"  default for every service that reads this config file."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"  The environment variable ``OS_NOVA_DISABLE_EVENTLET_PATCHING`` takes"},{"line_number":119,"context_line":"  precedence over this option when both are set."}],"source_content_type":"text/x-python","patch_set":1,"id":"532a5be0_ed17b299","line":116,"in_reply_to":"83a598ca_680af18c","updated":"2026-06-18 10:41:10.000000000","message":"Done","commit_id":"f0c3d0585a1c4ebc2f8b9eababbf080845864fac"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"fe4dc7ea834c9d9979ff4d083f5b87bb2a2108fb","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"  * ``[DEFAULT]/default_green_pool_size`` (only used in eventlet mode)"},{"line_number":130,"context_line":"  * ``[DEFAULT]/default_thread_pool_size`` (only used in native threading mode)"},{"line_number":131,"context_line":"  * ``[DEFAULT]/cell_worker_thread_pool_size`` (only used in native threading mode)"},{"line_number":132,"context_line":"  \"\"\"),"},{"line_number":133,"context_line":"    cfg.IntOpt("},{"line_number":134,"context_line":"        \u0027default_thread_pool_size\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"e33a8209_1a379b66","line":131,"updated":"2026-06-17 17:33:10.000000000","message":"pep8: E501 line too long (83 \u003e 79 characters)","commit_id":"f0c3d0585a1c4ebc2f8b9eababbf080845864fac"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6d8f1f053ba576ed82b237ce3bc2675059dc3377","unresolved":true,"context_lines":[{"line_number":91,"context_line":"        default\u003d\u0027auto\u0027,"},{"line_number":92,"context_line":"        choices\u003d["},{"line_number":93,"context_line":"            (\u0027auto\u0027, \u0027Use the per-binary deployment default. On Nova master \u0027"},{"line_number":94,"context_line":"                    \u0027all services default to native threading except the \u0027"},{"line_number":95,"context_line":"                    \u0027novnc/serial/spice console proxy services and CLI entry \u0027"},{"line_number":96,"context_line":"                    \u0027points (nova-manage, nova-policy, nova-status). \u0027"},{"line_number":97,"context_line":"                    \u0027This is the same as leaving the option unset.\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"9743e177_27535303","line":94,"updated":"2026-06-18 12:10:30.000000000","message":"nit: it is a pretty strange hanging indentation. If you want the handing indent then I suggest to align the opening \u0027 to the same clumn","commit_id":"68c37a985ba75459e53ad050352d276ac24af041"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"4cc3be031a518052826b7d1729ad6ed0d77c44c7","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        default\u003d\u0027auto\u0027,"},{"line_number":92,"context_line":"        choices\u003d["},{"line_number":93,"context_line":"            (\u0027auto\u0027, \u0027Use the per-binary deployment default. On Nova master \u0027"},{"line_number":94,"context_line":"                    \u0027all services default to native threading except the \u0027"},{"line_number":95,"context_line":"                    \u0027novnc/serial/spice console proxy services and CLI entry \u0027"},{"line_number":96,"context_line":"                    \u0027points (nova-manage, nova-policy, nova-status). \u0027"},{"line_number":97,"context_line":"                    \u0027This is the same as leaving the option unset.\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"5cd50d13_bc966888","line":94,"in_reply_to":"9743e177_27535303","updated":"2026-06-22 11:26:44.000000000","message":"Done","commit_id":"68c37a985ba75459e53ad050352d276ac24af041"}],"nova/monkey_patch.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a866f0117f507f37d9336f48dfa6243e6141722b","unresolved":true,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"def _get_concurrency_from_config():"},{"line_number":27,"context_line":"    import sys"},{"line_number":28,"context_line":"    from oslo_config.cfg import find_config_files, ConfigParser"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    # Pre-scan argv for --config-file (avoids reimplementing oslo\u0027s search)"},{"line_number":31,"context_line":"    config_files \u003d []"}],"source_content_type":"text/x-python","patch_set":1,"id":"55d68638_ca2f88ca","line":28,"updated":"2026-06-17 15:16:39.000000000","message":"hm if we can import this without issue (as it does not force backend selection) Then I think we migth be able to simplify the below to something like (not tested):\n\n```\nconf \u003d cfg.ConfigOpts() #\u003c- create a local conf object, keep the global CONF object intact so that can be initialized as normal later by the service. Or if that is pulling in too much then we can just pass our single config opt definition here \nconf.register_opts(\u003cthe config option definitions\u003e) #\u003c- we might be able to just use the existing nova.conf definitions here\nconf(sys.argv[1:])  #\u003c- this will do the CLI parsing automatically for us afaik\nreturn conf.concurrency_backend \u003c- access conf options normally\n```","commit_id":"f0c3d0585a1c4ebc2f8b9eababbf080845864fac"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"fe4dc7ea834c9d9979ff4d083f5b87bb2a2108fb","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"def _get_concurrency_from_config():"},{"line_number":27,"context_line":"    import sys"},{"line_number":28,"context_line":"    from oslo_config.cfg import find_config_files, ConfigParser"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    # Pre-scan argv for --config-file (avoids reimplementing oslo\u0027s search)"},{"line_number":31,"context_line":"    config_files \u003d []"}],"source_content_type":"text/x-python","patch_set":1,"id":"55c42fe6_fee5bab3","line":28,"updated":"2026-06-17 17:33:10.000000000","message":"pep8: H301: one import per line","commit_id":"f0c3d0585a1c4ebc2f8b9eababbf080845864fac"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6d8f1f053ba576ed82b237ce3bc2675059dc3377","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"def _get_concurrency_from_config():"},{"line_number":27,"context_line":"    import sys"},{"line_number":28,"context_line":"    from oslo_config.cfg import find_config_files, ConfigParser"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    # Pre-scan argv for --config-file (avoids reimplementing oslo\u0027s search)"},{"line_number":31,"context_line":"    config_files \u003d []"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa6dfca2_13422698","line":28,"in_reply_to":"55d68638_ca2f88ca","updated":"2026-06-18 12:10:30.000000000","message":"Done","commit_id":"f0c3d0585a1c4ebc2f8b9eababbf080845864fac"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a866f0117f507f37d9336f48dfa6243e6141722b","unresolved":true,"context_lines":[{"line_number":123,"context_line":"            \"the backend can only be \u0027eventlet\u0027 or \u0027threading\u0027\")"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    env \u003d os.environ.get(\u0027OS_NOVA_DISABLE_EVENTLET_PATCHING\u0027, \u0027\u0027).lower()"},{"line_number":126,"context_line":"    if env \u003d\u003d \u0027\u0027:"},{"line_number":127,"context_line":"        cfg_val \u003d _get_concurrency_from_config()"},{"line_number":128,"context_line":"        if cfg_val \u003d\u003d \u0027threading\u0027:"},{"line_number":129,"context_line":"            should_patch \u003d False"}],"source_content_type":"text/x-python","patch_set":1,"id":"d4f41444_8148a5fb","line":126,"updated":"2026-06-17 15:16:39.000000000","message":"OK, so if the ENV is specified then that wins. I agree.","commit_id":"f0c3d0585a1c4ebc2f8b9eababbf080845864fac"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6d8f1f053ba576ed82b237ce3bc2675059dc3377","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            \"the backend can only be \u0027eventlet\u0027 or \u0027threading\u0027\")"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    env \u003d os.environ.get(\u0027OS_NOVA_DISABLE_EVENTLET_PATCHING\u0027, \u0027\u0027).lower()"},{"line_number":126,"context_line":"    if env \u003d\u003d \u0027\u0027:"},{"line_number":127,"context_line":"        cfg_val \u003d _get_concurrency_from_config()"},{"line_number":128,"context_line":"        if cfg_val \u003d\u003d \u0027threading\u0027:"},{"line_number":129,"context_line":"            should_patch \u003d False"}],"source_content_type":"text/x-python","patch_set":1,"id":"2da00a27_58bc9eab","line":126,"in_reply_to":"d4f41444_8148a5fb","updated":"2026-06-18 12:10:30.000000000","message":"Done","commit_id":"f0c3d0585a1c4ebc2f8b9eababbf080845864fac"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"fe4dc7ea834c9d9979ff4d083f5b87bb2a2108fb","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            should_patch \u003d False"},{"line_number":130,"context_line":"        elif cfg_val \u003d\u003d \u0027eventlet\u0027:"},{"line_number":131,"context_line":"            should_patch \u003d True"},{"line_number":132,"context_line":"        else:  # \u0027auto\u0027, None, or unrecognised — fall through to per-binary default"},{"line_number":133,"context_line":"            should_patch \u003d (backend \u003d\u003d \u0027eventlet\u0027)"},{"line_number":134,"context_line":"    elif env in (\u00271\u0027, \u0027true\u0027, \u0027yes\u0027):"},{"line_number":135,"context_line":"        should_patch \u003d False"}],"source_content_type":"text/x-python","patch_set":1,"id":"fd44116c_c998a105","line":132,"updated":"2026-06-17 17:33:10.000000000","message":"pep8: E501 line too long (83 \u003e 79 characters)","commit_id":"f0c3d0585a1c4ebc2f8b9eababbf080845864fac"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a866f0117f507f37d9336f48dfa6243e6141722b","unresolved":true,"context_lines":[{"line_number":129,"context_line":"            should_patch \u003d False"},{"line_number":130,"context_line":"        elif cfg_val \u003d\u003d \u0027eventlet\u0027:"},{"line_number":131,"context_line":"            should_patch \u003d True"},{"line_number":132,"context_line":"        else:  # \u0027auto\u0027, None, or unrecognised — fall through to per-binary default"},{"line_number":133,"context_line":"            should_patch \u003d (backend \u003d\u003d \u0027eventlet\u0027)"},{"line_number":134,"context_line":"    elif env in (\u00271\u0027, \u0027true\u0027, \u0027yes\u0027):"},{"line_number":135,"context_line":"        should_patch \u003d False"}],"source_content_type":"text/x-python","patch_set":1,"id":"8ad89970_15ccb945","line":132,"updated":"2026-06-17 15:16:39.000000000","message":"yepp this should be or \"deployment default\" I.e. if you just deploy openstack then it should be the per binary hard coded default that is applied automatically and the ENV and config is there only to \"override\" if shit happens.","commit_id":"f0c3d0585a1c4ebc2f8b9eababbf080845864fac"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"a34e1e5532d1aac2c8bccd00e7deb94d4c2d586b","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            should_patch \u003d False"},{"line_number":130,"context_line":"        elif cfg_val \u003d\u003d \u0027eventlet\u0027:"},{"line_number":131,"context_line":"            should_patch \u003d True"},{"line_number":132,"context_line":"        else:  # \u0027auto\u0027, None, or unrecognised — fall through to per-binary default"},{"line_number":133,"context_line":"            should_patch \u003d (backend \u003d\u003d \u0027eventlet\u0027)"},{"line_number":134,"context_line":"    elif env in (\u00271\u0027, \u0027true\u0027, \u0027yes\u0027):"},{"line_number":135,"context_line":"        should_patch \u003d False"}],"source_content_type":"text/x-python","patch_set":1,"id":"7b6058ed_b9a2d3fd","line":132,"in_reply_to":"8ad89970_15ccb945","updated":"2026-06-18 10:41:10.000000000","message":"Done","commit_id":"f0c3d0585a1c4ebc2f8b9eababbf080845864fac"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"27b5cf7d79e811fd5c47282876faa12eb7823872","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def _get_concurrency_from_config():"},{"line_number":28,"context_line":"    from oslo_config import cfg"},{"line_number":29,"context_line":"    from nova.conf import base as base_conf"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    conf \u003d cfg.ConfigOpts()"},{"line_number":32,"context_line":"    conf.register_opts(base_conf.base_options)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bdf496ec_ce516cce","line":29,"updated":"2026-06-18 12:42:29.000000000","message":"pep8: H306: imports not in alphabetical order (oslo_config.cfg, nova.conf.base)","commit_id":"68c37a985ba75459e53ad050352d276ac24af041"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6d8f1f053ba576ed82b237ce3bc2675059dc3377","unresolved":true,"context_lines":[{"line_number":29,"context_line":"    from nova.conf import base as base_conf"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    conf \u003d cfg.ConfigOpts()"},{"line_number":32,"context_line":"    conf.register_opts(base_conf.base_options)"},{"line_number":33,"context_line":"    try:"},{"line_number":34,"context_line":"        conf(sys.argv[1:])"},{"line_number":35,"context_line":"    except cfg.Error:"}],"source_content_type":"text/x-python","patch_set":2,"id":"db495ae2_1ab714e8","line":32,"updated":"2026-06-18 12:10:30.000000000","message":"Yeah, we don\u0027n need the full set of config defs as we only use one specific config option form this parser. \n\nMaybe it worth adding a comment here that we are doing this very narrow config parsing here due to selecting the backend early. And the normal, full config parsing will happen later in the service startup process.","commit_id":"68c37a985ba75459e53ad050352d276ac24af041"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"4cc3be031a518052826b7d1729ad6ed0d77c44c7","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    from nova.conf import base as base_conf"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    conf \u003d cfg.ConfigOpts()"},{"line_number":32,"context_line":"    conf.register_opts(base_conf.base_options)"},{"line_number":33,"context_line":"    try:"},{"line_number":34,"context_line":"        conf(sys.argv[1:])"},{"line_number":35,"context_line":"    except cfg.Error:"}],"source_content_type":"text/x-python","patch_set":2,"id":"6ae2a987_efa70774","line":32,"in_reply_to":"db495ae2_1ab714e8","updated":"2026-06-22 11:26:44.000000000","message":"Done","commit_id":"68c37a985ba75459e53ad050352d276ac24af041"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6d8f1f053ba576ed82b237ce3bc2675059dc3377","unresolved":true,"context_lines":[{"line_number":32,"context_line":"    conf.register_opts(base_conf.base_options)"},{"line_number":33,"context_line":"    try:"},{"line_number":34,"context_line":"        conf(sys.argv[1:])"},{"line_number":35,"context_line":"    except cfg.Error:"},{"line_number":36,"context_line":"        return None"},{"line_number":37,"context_line":"    return conf.concurrency_backend"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1b939860_35afcab2","line":36,"range":{"start_line":35,"start_character":0,"end_line":36,"end_character":19},"updated":"2026-06-18 12:10:30.000000000","message":"I\u0027m wondering if we can let the error actually bubble up and fail the service startup. E.g. we should not try to start up with a badly formatted config file. Could you test is out locally if it is OK to let this bubble up  (I assume so).","commit_id":"68c37a985ba75459e53ad050352d276ac24af041"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"4cc3be031a518052826b7d1729ad6ed0d77c44c7","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    conf.register_opts(base_conf.base_options)"},{"line_number":33,"context_line":"    try:"},{"line_number":34,"context_line":"        conf(sys.argv[1:])"},{"line_number":35,"context_line":"    except cfg.Error:"},{"line_number":36,"context_line":"        return None"},{"line_number":37,"context_line":"    return conf.concurrency_backend"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"c8707697_388b7a26","line":36,"range":{"start_line":35,"start_character":0,"end_line":36,"end_character":19},"in_reply_to":"1b939860_35afcab2","updated":"2026-06-22 11:26:44.000000000","message":"Done","commit_id":"68c37a985ba75459e53ad050352d276ac24af041"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6d8f1f053ba576ed82b237ce3bc2675059dc3377","unresolved":true,"context_lines":[{"line_number":85,"context_line":"    return True"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"def patch(backend\u003d\u0027eventlet\u0027):"},{"line_number":89,"context_line":"    \"\"\"Apply eventlet monkey patching according to environment."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    :param backend: Defines the default backend if not explicitly set via"}],"source_content_type":"text/x-python","patch_set":2,"id":"660300dc_a50c4f30","line":88,"updated":"2026-06-18 12:10:30.000000000","message":"I think we have some unit test coverage in https://github.com/openstack/nova/blob/d5b82e107e46a8e29483c22f9713335f2e028939/nova/tests/unit/test_utils.py#L1688 for this code. Could you check it please if we can add to it to cover the config option part?","commit_id":"68c37a985ba75459e53ad050352d276ac24af041"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"4cc3be031a518052826b7d1729ad6ed0d77c44c7","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    return True"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"def patch(backend\u003d\u0027eventlet\u0027):"},{"line_number":89,"context_line":"    \"\"\"Apply eventlet monkey patching according to environment."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    :param backend: Defines the default backend if not explicitly set via"}],"source_content_type":"text/x-python","patch_set":2,"id":"1c108b5f_f50d1a33","line":88,"in_reply_to":"660300dc_a50c4f30","updated":"2026-06-22 11:26:44.000000000","message":"Done","commit_id":"68c37a985ba75459e53ad050352d276ac24af041"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"07e7678b9f260aa6b3044d07a6f60224711e405c","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                result.append(next(it))"},{"line_number":41,"context_line":"            except StopIteration:"},{"line_number":42,"context_line":"                pass"},{"line_number":43,"context_line":"        elif arg.startswith(\u0027--config-file\u003d\u0027) or arg.startswith(\u0027--config-dir\u003d\u0027):"},{"line_number":44,"context_line":"            result.append(arg)"},{"line_number":45,"context_line":"    return result"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"0f363d53_e55a4a5e","line":43,"updated":"2026-06-29 18:15:06.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"7d0a7728a579b99eeeb6eab4b4acb6533c3fd2f6"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"45c54525bb1ee8ea655796d3fc644a03013ebcc9","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                result.append(next(it))"},{"line_number":41,"context_line":"            except StopIteration:"},{"line_number":42,"context_line":"                pass"},{"line_number":43,"context_line":"        elif arg.startswith(\u0027--config-file\u003d\u0027) or arg.startswith(\u0027--config-dir\u003d\u0027):"},{"line_number":44,"context_line":"            result.append(arg)"},{"line_number":45,"context_line":"    return result"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"810cc0b5_ecbf19f9","line":43,"updated":"2026-06-29 14:29:57.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"7d0a7728a579b99eeeb6eab4b4acb6533c3fd2f6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"867052d55bb6493399ed612d3b64611515eed192","unresolved":true,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    oslo_config only needs these to locate config files. Subcommand tokens"},{"line_number":31,"context_line":"    (e.g. \"api_db sync\" for nova-manage) and test-runner arguments are unknown"},{"line_number":32,"context_line":"    to a bare ConfigOpts instance and would cause argparse to call sys.exit(2)."},{"line_number":33,"context_line":"    \"\"\""},{"line_number":34,"context_line":"    result \u003d []"},{"line_number":35,"context_line":"    it \u003d iter(argv)"}],"source_content_type":"text/x-python","patch_set":8,"id":"80ea5180_b02620b5","line":32,"updated":"2026-06-30 15:09:32.000000000","message":"yeah, good catch. I did not try CLIs locally with this patch just the service startups.\n\nIn a CLI entry point we call `CONF.register_cli_opts([category_opt, post_mortem_opt])` to register the params used by the particular CLI commands. I guess that makes the oslo.config aware of all params so it does not fail. \n\nI\u0027m wondering if oslo.config only register these tho CLI params.\n\n//later \n\nOK this is here https://github.com/openstack/oslo.config/blob/ab7afcdd79015b98fbbfd315cf810613f5b6932f/oslo_config/cfg.py#L2359-L2389\n\nit is indeed two opts as below. The defaults of those two is interesting as it is dynamic. We should check if that gets initialized properly in this case too.","commit_id":"d4a261891099c21ea766774e3af2dd243d33d872"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"19522d4ef1d6837d669fd0d305b61a91a4949ab2","unresolved":true,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    oslo_config only needs these to locate config files. Subcommand tokens"},{"line_number":31,"context_line":"    (e.g. \"api_db sync\" for nova-manage) and test-runner arguments are unknown"},{"line_number":32,"context_line":"    to a bare ConfigOpts instance and would cause argparse to call sys.exit(2)."},{"line_number":33,"context_line":"    \"\"\""},{"line_number":34,"context_line":"    result \u003d []"},{"line_number":35,"context_line":"    it \u003d iter(argv)"}],"source_content_type":"text/x-python","patch_set":8,"id":"c1a79a00_e6caccad","line":32,"in_reply_to":"80ea5180_b02620b5","updated":"2026-07-01 13:33:42.000000000","message":"The dynamic defaults (find_config_files) on config-file/config-dir are oslo.config-internal opts computed in _pre_setup() during CONF.__call__(), before _parse_cli_opts() runs — so they are always properly\n  initialized. The early narrow parse in the patch uses a completely isolated fresh cfg.ConfigOpts() instance, not the global CONF, so it cannot interfere with the subsequent register_cli_opts +\n  config.parse_args() flow in manage.main(). I also grepped nova/cmd/ — no CLI programmatically constructs --config-file/--config-dir, so _config_file_args() only ever sees user-provided flags","commit_id":"d4a261891099c21ea766774e3af2dd243d33d872"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d9f8e4f1ce4420cac3bff952d0aec701e0f0b509","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    oslo_config only needs these to locate config files. Subcommand tokens"},{"line_number":31,"context_line":"    (e.g. \"api_db sync\" for nova-manage) and test-runner arguments are unknown"},{"line_number":32,"context_line":"    to a bare ConfigOpts instance and would cause argparse to call sys.exit(2)."},{"line_number":33,"context_line":"    \"\"\""},{"line_number":34,"context_line":"    result \u003d []"},{"line_number":35,"context_line":"    it \u003d iter(argv)"}],"source_content_type":"text/x-python","patch_set":8,"id":"753be67f_79a4b021","line":32,"in_reply_to":"c1a79a00_e6caccad","updated":"2026-07-06 14:01:06.000000000","message":"Acknowledged","commit_id":"d4a261891099c21ea766774e3af2dd243d33d872"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"35b934f8ea4a8d2455ac1c47d0ee94f28c097971","unresolved":false,"context_lines":[{"line_number":140,"context_line":"            should_patch \u003d True"},{"line_number":141,"context_line":"        else:"},{"line_number":142,"context_line":"            # \u0027auto\u0027 or unrecognised: apply the per-binary deployment"},{"line_number":143,"context_line":"            # default passed in via the ``backend`` parameter."},{"line_number":144,"context_line":"            should_patch \u003d (backend \u003d\u003d \u0027eventlet\u0027)"},{"line_number":145,"context_line":"    elif env in (\u00271\u0027, \u0027true\u0027, \u0027yes\u0027):"},{"line_number":146,"context_line":"        should_patch \u003d False"},{"line_number":147,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":12,"id":"6559a6e7_46826be8","line":144,"range":{"start_line":143,"start_character":0,"end_line":144,"end_character":50},"updated":"2026-07-06 16:10:14.000000000","message":"++, having new config option default to \u0027auto\u0027 keeps the console proxy services stary as eventlet as default (I mean this is not changing console proxy defaults).","commit_id":"41a24caee37c5921e137a478d1b3c82a32b56bd9"}],"releasenotes/notes/concurrency-backend-config-option-b2c281bc1dced432.yaml":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"35b934f8ea4a8d2455ac1c47d0ee94f28c097971","unresolved":true,"context_lines":[{"line_number":5,"context_line":"    to allow operators to explicitly select the concurrency backend used by Nova"},{"line_number":6,"context_line":"    services. Accepted values are ``auto`` (default), ``threading``, and"},{"line_number":7,"context_line":"    ``eventlet``. When set to ``auto`` each Nova binary applies its own"},{"line_number":8,"context_line":"    built-in deployment default: on Nova master all services default to native"},{"line_number":9,"context_line":"    threading except the novnc/serial/spice console proxy services and CLI"},{"line_number":10,"context_line":"    entry points (nova-manage, nova-policy, nova-status). Setting an explicit"},{"line_number":11,"context_line":"    value overrides the per-binary default for every service that reads the"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"34df8f96_0cc76308","line":8,"range":{"start_line":8,"start_character":41,"end_line":8,"end_character":48},"updated":"2026-07-06 16:10:14.000000000","message":"\u0027master\u0027 will not be easy to understand by users, can you please add release name here instead of \u0027master\u0027","commit_id":"41a24caee37c5921e137a478d1b3c82a32b56bd9"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"35b934f8ea4a8d2455ac1c47d0ee94f28c097971","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    threading except the novnc/serial/spice console proxy services and CLI"},{"line_number":10,"context_line":"    entry points (nova-manage, nova-policy, nova-status). Setting an explicit"},{"line_number":11,"context_line":"    value overrides the per-binary default for every service that reads the"},{"line_number":12,"context_line":"    config file. The environment variable ``OS_NOVA_DISABLE_EVENTLET_PATCHING``"},{"line_number":13,"context_line":"    takes precedence over this option when both are set. See the"},{"line_number":14,"context_line":"    `concurrency admin guide"},{"line_number":15,"context_line":"    \u003chttps://docs.openstack.org/nova/latest/admin/concurrency.html\u003e`__ for"},{"line_number":16,"context_line":"    details."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"50531120_545c27ac","line":13,"range":{"start_line":12,"start_character":17,"end_line":13,"end_character":56},"updated":"2026-07-06 16:10:14.000000000","message":"++, keeping it backward compatible way is nice","commit_id":"41a24caee37c5921e137a478d1b3c82a32b56bd9"}]}
