)]}'
{".zuul.yaml":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e3829958118aada2605396cf701e770667e22d25","unresolved":true,"context_lines":[{"line_number":564,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-cond-cell1\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":565,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-super-cond\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":566,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-cpu\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":567,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-novnc\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":568,"context_line":"      devstack_services:"},{"line_number":569,"context_line":"        # Disable OVN services"},{"line_number":570,"context_line":"        br-ex-tcpdump: false"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"57d2de88_731b2cbe","line":567,"range":{"start_line":567,"start_character":0,"end_line":567,"end_character":77},"updated":"2026-04-10 22:11:55.000000000","message":"how about other proxy services nova-serialproxy, and nova-spicehtml5proxy ? as change in nova/console/websocketproxy.py will impact all proxy service I think we should test other also in threading mode and see if they work fine or not","commit_id":"880337cc10ba779f5212fc34519c8e2dd65750f5"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"73a5fd7899da7126eacadd746877aea6eec32ab3","unresolved":false,"context_lines":[{"line_number":564,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-cond-cell1\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":565,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-super-cond\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":566,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-cpu\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":567,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-novnc\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":568,"context_line":"      devstack_services:"},{"line_number":569,"context_line":"        # Disable OVN services"},{"line_number":570,"context_line":"        br-ex-tcpdump: false"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"2e275348_1be5e0ef","line":567,"range":{"start_line":567,"start_character":0,"end_line":567,"end_character":77},"in_reply_to":"101eae4b_eca26def","updated":"2026-04-13 15:22:17.000000000","message":"Done","commit_id":"880337cc10ba779f5212fc34519c8e2dd65750f5"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f6710fa5e8bc037724b41cdf775818c2d0db774e","unresolved":true,"context_lines":[{"line_number":564,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-cond-cell1\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":565,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-super-cond\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":566,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-cpu\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":567,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-novnc\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":568,"context_line":"      devstack_services:"},{"line_number":569,"context_line":"        # Disable OVN services"},{"line_number":570,"context_line":"        br-ex-tcpdump: false"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"e4e806c4_a89dc876","line":567,"range":{"start_line":567,"start_character":0,"end_line":567,"end_character":77},"in_reply_to":"2e275348_1be5e0ef","updated":"2026-04-13 22:57:06.000000000","message":"We do have live migration test that verify the serial console, but I do not see if any job enaling it. I found this very old commit tried to setup the seriel console in upstream CI (during the time when this test was added in tempest): https://review.opendev.org/c/openstack/nova/+/347471\n\nI am not sure how easy is to run this serial console test in upstream CI but if we can run that in threading mode it will be great.\n\n- https://github.com/openstack/tempest/blob/70c4143230559059ed0839956a2a153b36573c29/tempest/api/compute/admin/test_live_migration.py#L339C7-L339C41","commit_id":"880337cc10ba779f5212fc34519c8e2dd65750f5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bd9407c4c37b86396ec65dc26b4a3ed6e013e381","unresolved":true,"context_lines":[{"line_number":564,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-cond-cell1\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":565,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-super-cond\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":566,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-cpu\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":567,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-novnc\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":568,"context_line":"      devstack_services:"},{"line_number":569,"context_line":"        # Disable OVN services"},{"line_number":570,"context_line":"        br-ex-tcpdump: false"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"101eae4b_eca26def","line":567,"range":{"start_line":567,"start_character":0,"end_line":567,"end_character":77},"in_reply_to":"57d2de88_731b2cbe","updated":"2026-04-13 09:45:54.000000000","message":"OK I see we have spice specific tempest tests that looks at the traffic as well.\nhttps://github.com/openstack/tempest/blob/70c4143230559059ed0839956a2a153b36573c29/tempest/api/compute/admin/test_spice.py#L26\n\nThis supposed to run in nova-alt-configuration with eventlet. So if we want we can try to enable it here in nova-next with native threading.\n\nI don\u0027t think we have serial console proxy related tempest test cases so I would like to ignore that for now.","commit_id":"880337cc10ba779f5212fc34519c8e2dd65750f5"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"1dd68df0cda3a3752d00eb67018977fc914d675a","unresolved":false,"context_lines":[{"line_number":564,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-cond-cell1\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":565,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-super-cond\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":566,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-cpu\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":567,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-novnc\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":568,"context_line":"      devstack_services:"},{"line_number":569,"context_line":"        # Disable OVN services"},{"line_number":570,"context_line":"        br-ex-tcpdump: false"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"cfeb8170_629b90a3","line":567,"range":{"start_line":567,"start_character":0,"end_line":567,"end_character":77},"in_reply_to":"66d383b9_e63e09d7","updated":"2026-04-17 16:55:27.000000000","message":"I am also fine on that","commit_id":"880337cc10ba779f5212fc34519c8e2dd65750f5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e38861ca4882ee7b58858d32a8dcd70f0e196a17","unresolved":true,"context_lines":[{"line_number":564,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-cond-cell1\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":565,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-super-cond\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":566,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-cpu\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":567,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-novnc\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":568,"context_line":"      devstack_services:"},{"line_number":569,"context_line":"        # Disable OVN services"},{"line_number":570,"context_line":"        br-ex-tcpdump: false"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"66d383b9_e63e09d7","line":567,"range":{"start_line":567,"start_character":0,"end_line":567,"end_character":77},"in_reply_to":"e4e806c4_a89dc876","updated":"2026-04-15 13:11:26.000000000","message":"If the serial testing is not enabled today then I would take that enablement as an independent work item.","commit_id":"880337cc10ba779f5212fc34519c8e2dd65750f5"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f6710fa5e8bc037724b41cdf775818c2d0db774e","unresolved":false,"context_lines":[{"line_number":623,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-super-cond\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":624,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-cpu\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":625,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-novnc\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":626,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-spice\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":627,"context_line":"      devstack_services:"},{"line_number":628,"context_line":"        # Disable OVN services"},{"line_number":629,"context_line":"        br-ex-tcpdump: false"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"d3619707_d7eb0605","line":626,"range":{"start_line":626,"start_character":0,"end_line":626,"end_character":77},"updated":"2026-04-13 22:57:06.000000000","message":"++, thanks","commit_id":"5f948d8818c0080aca88353c1fdaca73e040fa87"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"77df9187da2953a495faf0ce3d0e5566682c05f6","unresolved":true,"context_lines":[{"line_number":510,"context_line":"    pre-run: playbooks/nova-next/pre.yaml"},{"line_number":511,"context_line":"    required-projects:"},{"line_number":512,"context_line":"        - novnc/novnc"},{"line_number":513,"context_line":"    nodeset: devstack-two-node-debian-bookworm"},{"line_number":514,"context_line":"    vars:"},{"line_number":515,"context_line":"      # We use the \"all\" environment for tempest_test_regex and"},{"line_number":516,"context_line":"      # tempest_exclude_regex."}],"source_content_type":"text/x-yaml","patch_set":21,"id":"5825a332_bea4a520","line":513,"updated":"2026-04-16 14:24:19.000000000","message":"hmmm, do we really want nova-next to run on Debian and no longer Noble ?\n\nif we really want to test Spice, I\u0027d rather want us to find a way to support SPICE with some noble tweaks than moving all the checks to Debian.","commit_id":"7d45fe9fbe723fd6537078faba02c3310e07ca50"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"26354c854a412ad616dbef1623b78db542cbb2d1","unresolved":true,"context_lines":[{"line_number":510,"context_line":"    pre-run: playbooks/nova-next/pre.yaml"},{"line_number":511,"context_line":"    required-projects:"},{"line_number":512,"context_line":"        - novnc/novnc"},{"line_number":513,"context_line":"    nodeset: devstack-two-node-debian-bookworm"},{"line_number":514,"context_line":"    vars:"},{"line_number":515,"context_line":"      # We use the \"all\" environment for tempest_test_regex and"},{"line_number":516,"context_line":"      # tempest_exclude_regex."}],"source_content_type":"text/x-yaml","patch_set":21,"id":"f16ad395_e148692f","line":513,"in_reply_to":"5825a332_bea4a520","updated":"2026-04-16 15:59:00.000000000","message":"I agree, if we have to do it, then I would prefer to have a new job rather than moving Nova-Next from Noble to Debian. I think exploring the missing part in devstack for spice console is right path to do.\n\nDid you try with \u0027qemu-system-modules-spice\u0027 instalaltion in devstack or it did not work?","commit_id":"7d45fe9fbe723fd6537078faba02c3310e07ca50"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"1dd68df0cda3a3752d00eb67018977fc914d675a","unresolved":false,"context_lines":[{"line_number":510,"context_line":"    pre-run: playbooks/nova-next/pre.yaml"},{"line_number":511,"context_line":"    required-projects:"},{"line_number":512,"context_line":"        - novnc/novnc"},{"line_number":513,"context_line":"    nodeset: devstack-two-node-debian-bookworm"},{"line_number":514,"context_line":"    vars:"},{"line_number":515,"context_line":"      # We use the \"all\" environment for tempest_test_regex and"},{"line_number":516,"context_line":"      # tempest_exclude_regex."}],"source_content_type":"text/x-yaml","patch_set":21,"id":"efba77cd_89f5fd17","line":513,"in_reply_to":"f16ad395_e148692f","updated":"2026-04-17 16:55:27.000000000","message":"Done","commit_id":"7d45fe9fbe723fd6537078faba02c3310e07ca50"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"d6a46830320db7a339907e67b83b574075c29738","unresolved":true,"context_lines":[{"line_number":510,"context_line":"    pre-run: playbooks/nova-next/pre.yaml"},{"line_number":511,"context_line":"    required-projects:"},{"line_number":512,"context_line":"        - novnc/novnc"},{"line_number":513,"context_line":"    nodeset: devstack-two-node-debian-bookworm"},{"line_number":514,"context_line":"    vars:"},{"line_number":515,"context_line":"      # We use the \"all\" environment for tempest_test_regex and"},{"line_number":516,"context_line":"      # tempest_exclude_regex."}],"source_content_type":"text/x-yaml","patch_set":21,"id":"381cadc5_1ed6f7fe","line":513,"in_reply_to":"f16ad395_e148692f","updated":"2026-04-20 12:35:40.000000000","message":"thanks @gmaan.os14@gmail.com thats work!","commit_id":"7d45fe9fbe723fd6537078faba02c3310e07ca50"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5bf049dea1c5ab0a9c97e889df2592e90ce40ff1","unresolved":true,"context_lines":[{"line_number":247,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-cond-cell1\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dfalse"},{"line_number":248,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-super-cond\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dfalse"},{"line_number":249,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-cpu\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dfalse"},{"line_number":250,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-novnc\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dfalse"},{"line_number":251,"context_line":"      devstack_services:"},{"line_number":252,"context_line":"        # Disable OVN services"},{"line_number":253,"context_line":"        br-ex-tcpdump: false"}],"source_content_type":"text/x-yaml","patch_set":23,"id":"27def7a5_fbb8ba5f","line":250,"updated":"2026-04-20 12:19:55.000000000","message":"the name of the service is \"n-novnc-cell1\"","commit_id":"6c3a338862779599af84ce545feb31bf1fa712c9"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"d6a46830320db7a339907e67b83b574075c29738","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-cond-cell1\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dfalse"},{"line_number":248,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-super-cond\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dfalse"},{"line_number":249,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-cpu\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dfalse"},{"line_number":250,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-novnc\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dfalse"},{"line_number":251,"context_line":"      devstack_services:"},{"line_number":252,"context_line":"        # Disable OVN services"},{"line_number":253,"context_line":"        br-ex-tcpdump: false"}],"source_content_type":"text/x-yaml","patch_set":23,"id":"d8a6f7ae_ca02bee8","line":250,"in_reply_to":"27def7a5_fbb8ba5f","updated":"2026-04-20 12:35:40.000000000","message":"Done","commit_id":"6c3a338862779599af84ce545feb31bf1fa712c9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5bf049dea1c5ab0a9c97e889df2592e90ce40ff1","unresolved":true,"context_lines":[{"line_number":624,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-cond-cell1\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":625,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-super-cond\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":626,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-cpu\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":627,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-novnc\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":628,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-spice\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":629,"context_line":"      devstack_services:"},{"line_number":630,"context_line":"        # Disable OVN services"}],"source_content_type":"text/x-yaml","patch_set":23,"id":"89c0ce15_2fa1eb73","line":627,"updated":"2026-04-20 12:19:55.000000000","message":"the name of the service is \"n-novnc-cell1\"","commit_id":"6c3a338862779599af84ce545feb31bf1fa712c9"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"d6a46830320db7a339907e67b83b574075c29738","unresolved":false,"context_lines":[{"line_number":624,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-cond-cell1\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":625,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-super-cond\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":626,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-cpu\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":627,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-novnc\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":628,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-spice\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":629,"context_line":"      devstack_services:"},{"line_number":630,"context_line":"        # Disable OVN services"}],"source_content_type":"text/x-yaml","patch_set":23,"id":"931976a6_9c3b12a2","line":627,"in_reply_to":"89c0ce15_2fa1eb73","updated":"2026-04-20 12:35:40.000000000","message":"Done","commit_id":"6c3a338862779599af84ce545feb31bf1fa712c9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5bf049dea1c5ab0a9c97e889df2592e90ce40ff1","unresolved":true,"context_lines":[{"line_number":625,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-super-cond\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":626,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-cpu\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":627,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-novnc\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":628,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-spice\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":629,"context_line":"      devstack_services:"},{"line_number":630,"context_line":"        # Disable OVN services"},{"line_number":631,"context_line":"        br-ex-tcpdump: false"}],"source_content_type":"text/x-yaml","patch_set":23,"id":"e199bf01_597c9d55","line":628,"updated":"2026-04-20 12:19:55.000000000","message":"n-spice-cell1","commit_id":"6c3a338862779599af84ce545feb31bf1fa712c9"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"d6a46830320db7a339907e67b83b574075c29738","unresolved":false,"context_lines":[{"line_number":625,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-super-cond\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":626,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-cpu\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":627,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-novnc\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":628,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-spice\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dtrue"},{"line_number":629,"context_line":"      devstack_services:"},{"line_number":630,"context_line":"        # Disable OVN services"},{"line_number":631,"context_line":"        br-ex-tcpdump: false"}],"source_content_type":"text/x-yaml","patch_set":23,"id":"4dae3ab5_0bcbe7c7","line":628,"in_reply_to":"e199bf01_597c9d55","updated":"2026-04-20 12:35:40.000000000","message":"Done","commit_id":"6c3a338862779599af84ce545feb31bf1fa712c9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2e5d91df8edf4d6f760b3cd0670062a44b5acf94","unresolved":true,"context_lines":[{"line_number":247,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-cond-cell1\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dfalse"},{"line_number":248,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-super-cond\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dfalse"},{"line_number":249,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-cpu\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dfalse"},{"line_number":250,"context_line":"        \u0027SYSTEMD_ENV_VARS[\"n-novnc-cell1\"]\u0027: OS_NOVA_DISABLE_EVENTLET_PATCHING\u003dfalse"},{"line_number":251,"context_line":"      devstack_services:"},{"line_number":252,"context_line":"        # Disable OVN services"},{"line_number":253,"context_line":"        br-ex-tcpdump: false"}],"source_content_type":"text/x-yaml","patch_set":24,"id":"2f6e40b5_afcaf0e2","line":250,"updated":"2026-04-22 18:19:35.000000000","message":"so i rebased my dnm on top and the pikel issue with python 3.14 also happens in eventlet mode \n\nhttps://zuul.opendev.org/t/openstack/build/3545326e526344d49d56360b9cdc70b6/log/controller/logs/screen-n-novnc-cell1.txt#17\n\nbut not in threaded mode\n\nhttps://zuul.opendev.org/t/openstack/build/c6b26903668f49e8b587087587791e43/log/controller/logs/screen-n-cond-cell1.txt","commit_id":"23be195ce10d81b2a9acd745d54954457c413291"}],"/COMMIT_MSG":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e3829958118aada2605396cf701e770667e22d25","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Kamil Sambor \u003ckamil.sambor@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-04-10 15:08:40 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Replace eventlet with threading in novncproxy"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change removes the eventlet dependency and monkey-patching from"},{"line_number":10,"context_line":"nova-novncproxy and replaces it with standard python threading via"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"dd28fa6a_b43c7f3c","line":7,"range":{"start_line":7,"start_character":35,"end_line":7,"end_character":45},"updated":"2026-04-10 22:11:55.000000000","message":"so change in nova/console/websocketproxy.py also change other proxy service like nova-serialproxy, and nova-spicehtml5proxy right? any specific reason to call novncproxy only?","commit_id":"880337cc10ba779f5212fc34519c8e2dd65750f5"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"73a5fd7899da7126eacadd746877aea6eec32ab3","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Kamil Sambor \u003ckamil.sambor@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-04-10 15:08:40 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Replace eventlet with threading in novncproxy"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change removes the eventlet dependency and monkey-patching from"},{"line_number":10,"context_line":"nova-novncproxy and replaces it with standard python threading via"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"76f6ce6b_eedd660e","line":7,"range":{"start_line":7,"start_character":35,"end_line":7,"end_character":45},"in_reply_to":"5271b83d_5e919c6e","updated":"2026-04-13 15:22:17.000000000","message":"Done","commit_id":"880337cc10ba779f5212fc34519c8e2dd65750f5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bd9407c4c37b86396ec65dc26b4a3ed6e013e381","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Kamil Sambor \u003ckamil.sambor@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-04-10 15:08:40 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Replace eventlet with threading in novncproxy"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change removes the eventlet dependency and monkey-patching from"},{"line_number":10,"context_line":"nova-novncproxy and replaces it with standard python threading via"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"5271b83d_5e919c6e","line":7,"range":{"start_line":7,"start_character":35,"end_line":7,"end_character":45},"in_reply_to":"dd28fa6a_b43c7f3c","updated":"2026-04-13 09:45:54.000000000","message":"That is a good point. I think it partially my sloppiness of using novncproxy even if all this is applicable for all the console proxies in nova (except maybe the tempest testing where we have separate tests per console type if any)","commit_id":"880337cc10ba779f5212fc34519c8e2dd65750f5"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e3829958118aada2605396cf701e770667e22d25","unresolved":true,"context_lines":[{"line_number":7,"context_line":"Replace eventlet with threading in novncproxy"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change removes the eventlet dependency and monkey-patching from"},{"line_number":10,"context_line":"nova-novncproxy and replaces it with standard python threading via"},{"line_number":11,"context_line":"socketserver.ThreadingMixIn."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I8fe7eb9649f988ba1ddf56d1d00ed781f3ca81c3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"02233ca0_7f7de291","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":15},"updated":"2026-04-10 22:11:55.000000000","message":"ditto","commit_id":"880337cc10ba779f5212fc34519c8e2dd65750f5"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"73a5fd7899da7126eacadd746877aea6eec32ab3","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Replace eventlet with threading in novncproxy"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change removes the eventlet dependency and monkey-patching from"},{"line_number":10,"context_line":"nova-novncproxy and replaces it with standard python threading via"},{"line_number":11,"context_line":"socketserver.ThreadingMixIn."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I8fe7eb9649f988ba1ddf56d1d00ed781f3ca81c3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"e0db62c8_2964aed9","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":15},"in_reply_to":"02233ca0_7f7de291","updated":"2026-04-13 15:22:17.000000000","message":"Done","commit_id":"880337cc10ba779f5212fc34519c8e2dd65750f5"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"db000a09ed1397a97f37985bab028b9dafdedc7f","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"3763f5b1_0645477d","updated":"2026-02-23 16:38:34.000000000","message":"I guess to make the test pass you need to pull in https://review.opendev.org/c/openstack/nova/+/955915","commit_id":"7cb9fa11cb34f9c890b410a375b7138bce5ed760"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"4e055c9b0edc03d6e953ce94ba0b71e3b679f7a8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"4641f5cb_30a87745","in_reply_to":"3763f5b1_0645477d","updated":"2026-03-30 06:12:32.000000000","message":"Done","commit_id":"7cb9fa11cb34f9c890b410a375b7138bce5ed760"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0b4ddcfc4cdf3019fc6d9e618966ab78495dcd5d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"a8e85ae9_ea38b763","updated":"2026-03-30 15:11:19.000000000","message":"Remaining things:\n* modify the .zuul config so that nova-next runs with native threaded novncproxy, while nova-alt-configuration runs with eventlet based one. The rest of the jobs can use the default as is. Ensure that nova-alt-configuration has TLS enabled for VNC as well and runs the relevant tempest test (https://github.com/openstack/nova/blob/cfd5474c6438ad7cdb553357a37df5f2150d37ed/.zuul.yaml#L548)\n* extend the concurrency.rst documentation with the fact that novnc now support native threading.\n* add a release notes.\n* have a view on how the memory consumption of the novncproxy changes when switched to native threading, is it increasing? how much? Do the deployer has a way to limit the memory consumption?\n* as the parent patch changed the SSL impl, I suggest to test that codepath once with native threading locally in devstack via https://docs.openstack.org/nova/2025.2/admin/remote-console-access.html#vnc-proxy-security (or check out how devstack does that via https://github.com/openstack/nova/blob/cfd5474c6438ad7cdb553357a37df5f2150d37ed/.zuul.yaml#L548 )","commit_id":"7913538f7e286285e7f0f3426e426b91fd841aed"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"8d6bc625dd19f8d47cfd23f9d3ed6a393ef54f36","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"c622cf7a_39ae0bcb","updated":"2026-03-30 06:14:59.000000000","message":"recheck","commit_id":"7913538f7e286285e7f0f3426e426b91fd841aed"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6f0c8b029eea5e7f9e31a67368d3967f86823b67","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"d2faa3be_fa33a78a","in_reply_to":"74ba9998_a1be76a1","updated":"2026-04-20 15:35:16.000000000","message":"Filed https://bugs.launchpad.net/nova/+bug/2148917 for the number of connection limit handling","commit_id":"7913538f7e286285e7f0f3426e426b91fd841aed"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"9329ff1fd1895f0cc5acb804411dba908be049ce","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"e48fb190_b6ddfab2","in_reply_to":"a8e85ae9_ea38b763","updated":"2026-03-31 12:30:44.000000000","message":"I have addressed part of this comment (updated concurrency and added a release note). I also tested memory consumption on devstack by creating 100 connections.\n--- Memory Test Results ---\nStarting Memory: 126.50 MB\nPeak Memory:     1430.18 MB\nTotal Growth:    1303.68 MB\n\n\n100 connection threading:\n--- Memory Test Results ---\nStarting Memory: 129.80 MB\nPeak Memory:     1765.77 MB\nTotal Growth:    1635.96 MB\nAs shown, the increase in memory consumption is not that drastic. Unfortunately, there is currently no way to limit consumption, but this could be implemented via additional configuration for example, by limiting max_children: https://docs.python.org/3/library/socketserver.html#socketserver.ThreadingMixIn.max_children\n\nZull update and ssl implementation tests I will update in next patchset","commit_id":"7913538f7e286285e7f0f3426e426b91fd841aed"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"dd6894d3702554a08bfdb16d636bffdffaacb207","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"85f7fb5e_5c733933","in_reply_to":"d2faa3be_fa33a78a","updated":"2026-04-22 11:54:36.000000000","message":"thanks, then I mark this one as a duplicate: https://bugs.launchpad.net/nova/+bug/2148314","commit_id":"7913538f7e286285e7f0f3426e426b91fd841aed"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8ae87b15087514ac6499e3ec66ccfe32cdd3b35d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"74ba9998_a1be76a1","in_reply_to":"e48fb190_b6ddfab2","updated":"2026-04-01 10:20:06.000000000","message":"based on that comment, OK with updating nova-next in a subsequent patch.","commit_id":"7913538f7e286285e7f0f3426e426b91fd841aed"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8ae87b15087514ac6499e3ec66ccfe32cdd3b35d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"ccf0c14f_308c6952","updated":"2026-04-01 10:20:06.000000000","message":"torn in between -1 and +1 to signal that I\u0027m bit afraid of defining long-running deamon threads but I\u0027m maybe missing a piece.","commit_id":"e3fe788ec0a9f0cc9549e6ddae1685d4e200098b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"1cd50feee0ed81a873e44d956de310b88f7c2c93","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"ab4dff6c_089533de","updated":"2026-04-10 10:59:06.000000000","message":"-1 for the rendering issue (found thanks to my LLM usage 😜). The dot can be added later but I don\u0027t want to have another patch for a reno file modification 😊","commit_id":"6b74f1c9f3049bc2d75cec9b7cfede58f913a9f1"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"ab2173254744a1ee8ffe1a01c1c77a6778014b59","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"568d3055_b8570b38","updated":"2026-04-10 13:10:17.000000000","message":"Thanks @sbauza@redhat.com !","commit_id":"880337cc10ba779f5212fc34519c8e2dd65750f5"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e3829958118aada2605396cf701e770667e22d25","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"c82e084b_7ca1d578","updated":"2026-04-10 22:11:55.000000000","message":"Thanks Kamil for the work.","commit_id":"880337cc10ba779f5212fc34519c8e2dd65750f5"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f6710fa5e8bc037724b41cdf775818c2d0db774e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"b4ff55be_b6326876","updated":"2026-04-13 22:57:06.000000000","message":"The changes lgtm, I am adding my soft -1 to see if we can run serial console tempest test also in threading mode but that is too complex to setup then i am ok to convert my vote and handle the serial console testing (eventlet as well as threading mode) as a separate effort.","commit_id":"5f948d8818c0080aca88353c1fdaca73e040fa87"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"bb649dc8292f823c6b816ea1f5cc879c49e21034","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"90a21cfa_0f0feae6","updated":"2026-04-14 12:48:24.000000000","message":"I remove spice from job config because it was failing with the following error: libvirt.libvirtError: unsupported configuration: spice graphics are not supported with this QEMU","commit_id":"c9c40c53ce0b1fec040d7bc9fff22d22e66c7cd7"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"cf1dacdc9a27b464b6fe9ae24de0c97e2f53606a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"5c1fe9fb_dcc12711","in_reply_to":"90a21cfa_0f0feae6","updated":"2026-04-14 18:09:28.000000000","message":"Yeah, it worked in nova-alt-configurations because that job run on debian-bookworm. The difference is nova-next job is running on Ubuntu Noble, which no longer has spice graphics in qemu-system by default.\n\nTo test the spice console in threading mode, either\n\n- To test it in nova-next job: we need to install \u0027qemu-system-modules-spice\u0027 manually in devstack (devstack/blob/master/lib/nova) for ubuntu noble.\n- A new job inherited from nova-alt-configurations but running in threading mode. Eventually, running nova-alt-configurations in eventlet mode needs to go away so it will not duplicate the job for a long time.\n\nAs we are moving the spice and seriel console proxy service also on threading mode, I feel we should test them in threading mode. I am not blocking it for serial console testing, as we do not test it for eventlet also, but the Spice console should be tested. Let\u0027s get @gibizer@gmail.com or @sbauza@redhat.com feedback on which of the above solutions or any other solution is a good fit here.","commit_id":"c9c40c53ce0b1fec040d7bc9fff22d22e66c7cd7"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"cf1dacdc9a27b464b6fe9ae24de0c97e2f53606a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"a22b0be7_4a27abef","updated":"2026-04-14 18:09:28.000000000","message":"I feel like spice console is testable (tested in eventlet mode) so we should not lose the coverage in threading mode.","commit_id":"8a91e6552e3a85354b6c800c829fda801fa817b3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e38861ca4882ee7b58858d32a8dcd70f0e196a17","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":19,"id":"a866475d_75ab52fa","updated":"2026-04-15 13:11:26.000000000","message":"recheck nova-next is failing with multiple things but the spice test failure is probably relevant here\n```\nDetails: {\u0027code\u0027: 400, \u0027message\u0027: \u0027Unavailable console type spice-direct.\u0027}\n```\nhttps://66a0c011fc527dca04f4-f1ca70434eb1a6e0aabfc1f83dc7e0ab.ssl.cf2.rackcdn.com/openstack/4bceee81360f4c39bdef3d55683bbc05/testr_results.html","commit_id":"aecf4b79df2bdb69dc44b3691c463447d53fa08d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6f0c8b029eea5e7f9e31a67368d3967f86823b67","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"1de33c6d_2e05642a","in_reply_to":"a866475d_75ab52fa","updated":"2026-04-20 15:35:16.000000000","message":"Done","commit_id":"aecf4b79df2bdb69dc44b3691c463447d53fa08d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"77df9187da2953a495faf0ce3d0e5566682c05f6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"3bf39801_8afbf7a0","updated":"2026-04-16 14:24:19.000000000","message":"I probably missed a point there but I\u0027m afraid of such important change (changing the nodeset to Debian).\n\nWhat\u0027s the current blocker that prevents us to use Noble for SPICE testing ? couldn\u0027t we work on some devstack extra that would do what we need ?","commit_id":"7d45fe9fbe723fd6537078faba02c3310e07ca50"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"26354c854a412ad616dbef1623b78db542cbb2d1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"77928b3c_29d93fc6","updated":"2026-04-16 15:59:00.000000000","message":"I agree not to move nova-next to debian for missing part in noble which should be doable in devstack.","commit_id":"5f5eff0d0f2dc0bf121157954777db8ba66b7a4b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b2c4529e04604e7ceffc2e2918db2d7159066791","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":23,"id":"5d7657f6_1276c8b6","updated":"2026-04-20 12:14:31.000000000","message":"I don\u0027t see in nova-next that the novnc service logs states that the service is started in native threading mode.\nWhen I locally reconfigure my novncproxy service in devstack I do see the log\n```\nApr 20 12:09:35 aio systemd[1]: Started devstack@n-novnc-cell1.service - Devstack devstack@n-novnc-cell1.service.\nApr 20 12:09:35 aio nova-novncproxy[257297]: /opt/stack/data/venv/lib/python3.13/site-packages/oslo_concurrency/lockutils.py:41: EventletDeprecationWarning:\nApr 20 12:09:35 aio nova-novncproxy[257297]: Eventlet is deprecated. It is currently being maintained in bugfix mode, and\nApr 20 12:09:35 aio nova-novncproxy[257297]: we strongly recommend against using it for new projects.\nApr 20 12:09:35 aio nova-novncproxy[257297]: If you are already using Eventlet, we recommend migrating to a different\nApr 20 12:09:35 aio nova-novncproxy[257297]: framework.  For more detail see\nApr 20 12:09:35 aio nova-novncproxy[257297]: https://eventlet.readthedocs.io/en/latest/asyncio/migration.html\nApr 20 12:09:35 aio nova-novncproxy[257297]:   import eventlet\nApr 20 12:09:35 aio nova-novncproxy[257297]: Service is starting with native threading. This is currently experimental. Do not use it in production without first testing it in pre-production.\nApr 20 12:09:35 aio nova-novncproxy[257297]: Service is starting with native threading. This is currently experimental. Do not use it in production without first testing it in pre-production.\nApr 20 12:09:35 aio nova-novncproxy[257297]: INFO nova.console.websocketproxy [-] WebSocket server settings:\nApr 20 12:09:35 aio nova-novncproxy[257297]: INFO nova.console.websocketproxy [-]   - Listen on 0.0.0.0:6080\n```\n\nwhile in nova-next\n```\nApr 17 08:31:57.180502 np12a4f066a5f44 systemd[1]: Started devstack@n-novnc-cell1.service - Devstack devstack@n-novnc-cell1.service.\nApr 17 08:31:57.708851 np12a4f066a5f44 nova-novncproxy[88110]: /opt/stack/nova/nova/monkey_patch.py:39: EventletDeprecationWarning:\nApr 17 08:31:57.708851 np12a4f066a5f44 nova-novncproxy[88110]: Eventlet is deprecated. It is currently being maintained in bugfix mode, and\nApr 17 08:31:57.708851 np12a4f066a5f44 nova-novncproxy[88110]: we strongly recommend against using it for new projects.\nApr 17 08:31:57.708851 np12a4f066a5f44 nova-novncproxy[88110]: If you are already using Eventlet, we recommend migrating to a different\nApr 17 08:31:57.708851 np12a4f066a5f44 nova-novncproxy[88110]: framework.  For more detail see\nApr 17 08:31:57.708851 np12a4f066a5f44 nova-novncproxy[88110]: https://eventlet.readthedocs.io/en/latest/asyncio/migration.html\nApr 17 08:31:57.708851 np12a4f066a5f44 nova-novncproxy[88110]:   import eventlet\nApr 17 08:32:00.875730 np12a4f066a5f44 nova-novncproxy[88110]: INFO nova.console.websocketproxy [-] WebSocket server settings:\nApr 17 08:32:00.876589 np12a4f066a5f44 nova-novncproxy[88110]: INFO nova.console.websocketproxy [-]   - Listen on 0.0.0.0:6080\n```\n\nSo something is fishy in the CI","commit_id":"6c3a338862779599af84ce545feb31bf1fa712c9"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"1dd68df0cda3a3752d00eb67018977fc914d675a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"349064b5_90a081b5","updated":"2026-04-17 16:55:27.000000000","message":"Thanks Kamil, lgtm. both spice and novnc test are passing.\n\n- https://zuul.opendev.org/t/openstack/build/7e06602ca4d14f0fadfcf9d54a997bf6/log/job-output.txt#36681\n- https://zuul.opendev.org/t/openstack/build/7e06602ca4d14f0fadfcf9d54a997bf6/log/job-output.txt#36895","commit_id":"6c3a338862779599af84ce545feb31bf1fa712c9"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"5763df499f8fff4bbdcec646d9be43f184f8a946","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"07e323b0_bff2ed42","in_reply_to":"592b65b4_13578d6f","updated":"2026-04-22 15:39:19.000000000","message":"Ah, I forgot to check the service running mode, nice catch.","commit_id":"6c3a338862779599af84ce545feb31bf1fa712c9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5f6238b00c3c4b22b19692b477923c884ba5b746","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":23,"id":"a9773e90_61ab23db","in_reply_to":"5d7657f6_1276c8b6","updated":"2026-04-20 12:17:43.000000000","message":"https://zuul.opendev.org/t/openstack/build/7e06602ca4d14f0fadfcf9d54a997bf6/log/controller/logs/devstacklog.txt\nIf you search for the env variable setting in the devstack logs then it visible how it is set to the nova services but is somehow does not happen to novnc and spice","commit_id":"6c3a338862779599af84ce545feb31bf1fa712c9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3d404122214d32f05a4715c4b36f96a35c1c4f51","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":23,"id":"9767f3db_1a3dc3ae","in_reply_to":"961d5186_1f0743b2","updated":"2026-04-20 12:52:36.000000000","message":"OK. It looks better now. Lets wait for the CI run to verify from the logs. If indeed we run with native threading based on the logs then I have nothing else here to fix and I will +2.","commit_id":"6c3a338862779599af84ce545feb31bf1fa712c9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6f0c8b029eea5e7f9e31a67368d3967f86823b67","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"592b65b4_13578d6f","in_reply_to":"9767f3db_1a3dc3ae","updated":"2026-04-20 15:35:16.000000000","message":"Done","commit_id":"6c3a338862779599af84ce545feb31bf1fa712c9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5bf049dea1c5ab0a9c97e889df2592e90ce40ff1","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":23,"id":"961d5186_1f0743b2","in_reply_to":"a9773e90_61ab23db","updated":"2026-04-20 12:19:55.000000000","message":"The service naming in zuul.yaml is wrong. See inline","commit_id":"6c3a338862779599af84ce545feb31bf1fa712c9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"16aaa1f1f9947a8b16a03c8dea40b51ebdb581b0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"9d2b1a7b_778a3686","updated":"2026-04-20 15:30:23.000000000","message":"CI passing and now the CI logs proves that the console proxy services running in native threading mode. So +2 from me.","commit_id":"23be195ce10d81b2a9acd745d54954457c413291"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"346289f861fd0f95073cebd93f91e59978dc2aa0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"80ae4977_5b8babe1","updated":"2026-04-24 10:25:33.000000000","message":"recheck","commit_id":"23be195ce10d81b2a9acd745d54954457c413291"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ebe1528f4e0c5e9765a394f45abe5f42954eb4cb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"22ded71d_050b0dfc","updated":"2026-04-22 17:32:04.000000000","message":"thanks Kamil, nice work !","commit_id":"23be195ce10d81b2a9acd745d54954457c413291"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"5763df499f8fff4bbdcec646d9be43f184f8a946","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"507de6c3_af65f86d","updated":"2026-04-22 15:39:19.000000000","message":"this lgtm. As Sylvain was also reviewing it, I am holding +w in case he would like to check the latest version.","commit_id":"23be195ce10d81b2a9acd745d54954457c413291"}],"doc/source/admin/concurrency.rst":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"1cd50feee0ed81a873e44d956de310b88f7c2c93","unresolved":true,"context_lines":[{"line_number":46,"context_line":"   Operators can still manually revert to ``eventlet`` mode if needed."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"   Since nova 34.0.0 (2026.2. Hibiscus) the novnc-proxy can be switched to"},{"line_number":49,"context_line":"   native threading mode."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Tunables for the native threading mode"},{"line_number":52,"context_line":"--------------------------------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"407318c7_9a892c49","line":49,"updated":"2026-04-10 10:59:06.000000000","message":"nit: \"2026.2. Hibiscus\" — extra period after 2. The existing entries in this file use \"2026.1 Gazpacho\" and \"2025.2 Flamingo\" without the extra dot.","commit_id":"6b74f1c9f3049bc2d75cec9b7cfede58f913a9f1"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"ab2173254744a1ee8ffe1a01c1c77a6778014b59","unresolved":false,"context_lines":[{"line_number":46,"context_line":"   Operators can still manually revert to ``eventlet`` mode if needed."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"   Since nova 34.0.0 (2026.2. Hibiscus) the novnc-proxy can be switched to"},{"line_number":49,"context_line":"   native threading mode."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Tunables for the native threading mode"},{"line_number":52,"context_line":"--------------------------------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"02a10900_aced4eb0","line":49,"in_reply_to":"407318c7_9a892c49","updated":"2026-04-10 13:10:17.000000000","message":"Done","commit_id":"6b74f1c9f3049bc2d75cec9b7cfede58f913a9f1"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e3829958118aada2605396cf701e770667e22d25","unresolved":true,"context_lines":[{"line_number":41,"context_line":"     for the above services. Support was also added for ``nova-conductor`` and"},{"line_number":42,"context_line":"     ``nova-compute``."},{"line_number":43,"context_line":"   * **Nova 34.0.0 (2026.2 Hibiscus):** Native threading became the **default**"},{"line_number":44,"context_line":"     for ``nova-conductor`` and ``nova-compute``."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"   Operators can still manually revert to ``eventlet`` mode if needed."},{"line_number":47,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"f4a8ba80_dac40b78","line":44,"range":{"start_line":44,"start_character":48,"end_line":44,"end_character":49},"updated":"2026-04-10 22:11:55.000000000","message":"here we can add\n\n. Support was also added for ``nova-novncproxy``.","commit_id":"880337cc10ba779f5212fc34519c8e2dd65750f5"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"73a5fd7899da7126eacadd746877aea6eec32ab3","unresolved":false,"context_lines":[{"line_number":41,"context_line":"     for the above services. Support was also added for ``nova-conductor`` and"},{"line_number":42,"context_line":"     ``nova-compute``."},{"line_number":43,"context_line":"   * **Nova 34.0.0 (2026.2 Hibiscus):** Native threading became the **default**"},{"line_number":44,"context_line":"     for ``nova-conductor`` and ``nova-compute``."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"   Operators can still manually revert to ``eventlet`` mode if needed."},{"line_number":47,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"9c3e9874_ed62e73f","line":44,"range":{"start_line":44,"start_character":48,"end_line":44,"end_character":49},"in_reply_to":"3db45eb5_9c4182cb","updated":"2026-04-13 15:22:17.000000000","message":"Done","commit_id":"880337cc10ba779f5212fc34519c8e2dd65750f5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bd9407c4c37b86396ec65dc26b4a3ed6e013e381","unresolved":true,"context_lines":[{"line_number":41,"context_line":"     for the above services. Support was also added for ``nova-conductor`` and"},{"line_number":42,"context_line":"     ``nova-compute``."},{"line_number":43,"context_line":"   * **Nova 34.0.0 (2026.2 Hibiscus):** Native threading became the **default**"},{"line_number":44,"context_line":"     for ``nova-conductor`` and ``nova-compute``."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"   Operators can still manually revert to ``eventlet`` mode if needed."},{"line_number":47,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"3db45eb5_9c4182cb","line":44,"range":{"start_line":44,"start_character":48,"end_line":44,"end_character":49},"in_reply_to":"f4a8ba80_dac40b78","updated":"2026-04-13 09:45:54.000000000","message":"I don\u0027t think we changed the **default** mode yet.\n//later\nAhh I see what you mean. Lets add a new bullet point that in H we added support for native threading in the console proxies.","commit_id":"880337cc10ba779f5212fc34519c8e2dd65750f5"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e3829958118aada2605396cf701e770667e22d25","unresolved":true,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"   Operators can still manually revert to ``eventlet`` mode if needed."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"   Since nova 34.0.0 (2026.2 Hibiscus) the novnc-proxy can be switched to"},{"line_number":49,"context_line":"   native threading mode."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Tunables for the native threading mode"}],"source_content_type":"text/x-rst","patch_set":11,"id":"e5232c73_60715d4c","line":48,"range":{"start_line":48,"start_character":43,"end_line":48,"end_character":54},"updated":"2026-04-10 22:11:55.000000000","message":"nova-novncproxy","commit_id":"880337cc10ba779f5212fc34519c8e2dd65750f5"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"73a5fd7899da7126eacadd746877aea6eec32ab3","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"   Operators can still manually revert to ``eventlet`` mode if needed."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"   Since nova 34.0.0 (2026.2 Hibiscus) the novnc-proxy can be switched to"},{"line_number":49,"context_line":"   native threading mode."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Tunables for the native threading mode"}],"source_content_type":"text/x-rst","patch_set":11,"id":"627c15e5_0360c21f","line":48,"range":{"start_line":48,"start_character":43,"end_line":48,"end_character":54},"in_reply_to":"e5232c73_60715d4c","updated":"2026-04-13 15:22:17.000000000","message":"Done","commit_id":"880337cc10ba779f5212fc34519c8e2dd65750f5"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e3829958118aada2605396cf701e770667e22d25","unresolved":true,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"   Operators can still manually revert to ``eventlet`` mode if needed."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"   Since nova 34.0.0 (2026.2 Hibiscus) the novnc-proxy can be switched to"},{"line_number":49,"context_line":"   native threading mode."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Tunables for the native threading mode"},{"line_number":52,"context_line":"--------------------------------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"253533e1_d6cff794","line":49,"range":{"start_line":48,"start_character":0,"end_line":49,"end_character":25},"updated":"2026-04-10 22:11:55.000000000","message":"can we keep it consistent with other release info done as list L38-L44. commented above.\n\nAs I commented in the other file, we are adding threading support for nova-serialproxy and nova-spicehtml5proxy also, or are you planning to do anything extra for them before calling threading mode support?","commit_id":"880337cc10ba779f5212fc34519c8e2dd65750f5"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f6710fa5e8bc037724b41cdf775818c2d0db774e","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"   Operators can still manually revert to ``eventlet`` mode if needed."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"   Since nova 34.0.0 (2026.2 Hibiscus) the novnc-proxy can be switched to"},{"line_number":49,"context_line":"   native threading mode."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Tunables for the native threading mode"},{"line_number":52,"context_line":"--------------------------------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3c3fc208_46775fd8","line":49,"range":{"start_line":48,"start_character":0,"end_line":49,"end_character":25},"in_reply_to":"253533e1_d6cff794","updated":"2026-04-13 22:57:06.000000000","message":"Done","commit_id":"880337cc10ba779f5212fc34519c8e2dd65750f5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e38861ca4882ee7b58858d32a8dcd70f0e196a17","unresolved":true,"context_lines":[{"line_number":41,"context_line":"     for the above services. Support was also added for ``nova-conductor`` and"},{"line_number":42,"context_line":"     ``nova-compute``."},{"line_number":43,"context_line":"   * **Nova 34.0.0 (2026.2 Hibiscus):** Native threading became the **default**"},{"line_number":44,"context_line":"     for ``nova-conductor`` and ``nova-compute``. Support has also been extended to"},{"line_number":45,"context_line":"     ``nova-novncproxy``, ``nova-serialproxy``, and ``nova-spicehtml5proxy``,"},{"line_number":46,"context_line":"     though these services require manual configuration to enable it."},{"line_number":47,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"ea60bbf9_03ffd2df","line":44,"updated":"2026-04-15 13:11:26.000000000","message":"nit: wrap to 80 chars","commit_id":"aecf4b79df2bdb69dc44b3691c463447d53fa08d"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"33be7d47dceccc34c889eb3eaf621d92696be016","unresolved":false,"context_lines":[{"line_number":41,"context_line":"     for the above services. Support was also added for ``nova-conductor`` and"},{"line_number":42,"context_line":"     ``nova-compute``."},{"line_number":43,"context_line":"   * **Nova 34.0.0 (2026.2 Hibiscus):** Native threading became the **default**"},{"line_number":44,"context_line":"     for ``nova-conductor`` and ``nova-compute``. Support has also been extended to"},{"line_number":45,"context_line":"     ``nova-novncproxy``, ``nova-serialproxy``, and ``nova-spicehtml5proxy``,"},{"line_number":46,"context_line":"     though these services require manual configuration to enable it."},{"line_number":47,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"3ee3bf4c_446df5ce","line":44,"in_reply_to":"ea60bbf9_03ffd2df","updated":"2026-04-16 09:25:08.000000000","message":"Done","commit_id":"aecf4b79df2bdb69dc44b3691c463447d53fa08d"}],"nova/console/websocketproxy.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1a69c3e4a2e83415bfee1804d82a2ddd7fe6cf1f","unresolved":true,"context_lines":[{"line_number":311,"context_line":"class NovaWebSocketProxyEventlet("},{"line_number":312,"context_line":"    websockify.WebSocketProxy):"},{"line_number":313,"context_line":"    \"\"\"A threaded server that isolates every client connection in a"},{"line_number":314,"context_line":"    eparate OS thread."},{"line_number":315,"context_line":"    \"\"\""},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"0c193bbb_30e292af","line":314,"updated":"2026-03-23 13:07:32.000000000","message":"comment seems not to be aligned with the class\u0027s impl","commit_id":"13abdf52a9033062b33a1c2909c9f6d0ca98feaf"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"4e055c9b0edc03d6e953ce94ba0b71e3b679f7a8","unresolved":false,"context_lines":[{"line_number":311,"context_line":"class NovaWebSocketProxyEventlet("},{"line_number":312,"context_line":"    websockify.WebSocketProxy):"},{"line_number":313,"context_line":"    \"\"\"A threaded server that isolates every client connection in a"},{"line_number":314,"context_line":"    eparate OS thread."},{"line_number":315,"context_line":"    \"\"\""},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"f520d2e4_ba209cbb","line":314,"in_reply_to":"0c193bbb_30e292af","updated":"2026-03-30 06:12:32.000000000","message":"Done","commit_id":"13abdf52a9033062b33a1c2909c9f6d0ca98feaf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1a69c3e4a2e83415bfee1804d82a2ddd7fe6cf1f","unresolved":true,"context_lines":[{"line_number":343,"context_line":""},{"line_number":344,"context_line":"class NovaWebSocketProxyThread("},{"line_number":345,"context_line":"    socketserver.ThreadingMixIn,"},{"line_number":346,"context_line":"    NovaWebSocketProxyEventlet):"},{"line_number":347,"context_line":"    daemon_threads \u003d True  # Threads die when the main process dies"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    def new_websocket_client(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"d4f4cf93_5511aa4e","line":346,"updated":"2026-03-23 13:07:32.000000000","message":"if you need to wrap the class list then please put the closing \u0027):\u0027 to a new line and unindent it to create visual separation between the \"class ...(...):\" logical line, and the first class variable declaration","commit_id":"13abdf52a9033062b33a1c2909c9f6d0ca98feaf"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"4e055c9b0edc03d6e953ce94ba0b71e3b679f7a8","unresolved":false,"context_lines":[{"line_number":343,"context_line":""},{"line_number":344,"context_line":"class NovaWebSocketProxyThread("},{"line_number":345,"context_line":"    socketserver.ThreadingMixIn,"},{"line_number":346,"context_line":"    NovaWebSocketProxyEventlet):"},{"line_number":347,"context_line":"    daemon_threads \u003d True  # Threads die when the main process dies"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    def new_websocket_client(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9b8721c2_52a959b9","line":346,"in_reply_to":"d4f4cf93_5511aa4e","updated":"2026-03-30 06:12:32.000000000","message":"Done","commit_id":"13abdf52a9033062b33a1c2909c9f6d0ca98feaf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1a69c3e4a2e83415bfee1804d82a2ddd7fe6cf1f","unresolved":true,"context_lines":[{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    def new_websocket_client(self):"},{"line_number":350,"context_line":"        \"\"\"Override the Nova method to remove eventlet dependencies."},{"line_number":351,"context_line":"        This belongs in the PROXY class, not the Handler."},{"line_number":352,"context_line":"        \"\"\""},{"line_number":353,"context_line":"        super().new_websocket_client()"},{"line_number":354,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"21a5caed_97bc39a1","line":351,"updated":"2026-03-23 13:07:32.000000000","message":"Is this disabling NovaProxyRequestHandler.new_websocket_client() ? \nIf yes, then how do we do all the non eventlet specific logic form there?\nIf now, then what happens with the eventlet hubbing there in native threaded mode?","commit_id":"13abdf52a9033062b33a1c2909c9f6d0ca98feaf"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"4e055c9b0edc03d6e953ce94ba0b71e3b679f7a8","unresolved":false,"context_lines":[{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    def new_websocket_client(self):"},{"line_number":350,"context_line":"        \"\"\"Override the Nova method to remove eventlet dependencies."},{"line_number":351,"context_line":"        This belongs in the PROXY class, not the Handler."},{"line_number":352,"context_line":"        \"\"\""},{"line_number":353,"context_line":"        super().new_websocket_client()"},{"line_number":354,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"716b92f3_4272b979","line":351,"in_reply_to":"21a5caed_97bc39a1","updated":"2026-03-30 06:12:32.000000000","message":"Done","commit_id":"13abdf52a9033062b33a1c2909c9f6d0ca98feaf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1a69c3e4a2e83415bfee1804d82a2ddd7fe6cf1f","unresolved":true,"context_lines":[{"line_number":360,"context_line":""},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"NovaWebSocketProxy \u003d NovaWebSocketProxyEventlet if not monkey_patch.is_patched("},{"line_number":363,"context_line":") else NovaWebSocketProxyThread"}],"source_content_type":"text/x-python","patch_set":4,"id":"0c8205c1_6555a046","line":363,"updated":"2026-03-23 13:07:32.000000000","message":"I would rather use the concurrency_mode_threading() helper instead from https://github.com/openstack/nova/blob/3be17878dcb42095f3ed3fc2819c2bf776c059b5/nova/utils.py#L1336","commit_id":"13abdf52a9033062b33a1c2909c9f6d0ca98feaf"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"4e055c9b0edc03d6e953ce94ba0b71e3b679f7a8","unresolved":false,"context_lines":[{"line_number":360,"context_line":""},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"NovaWebSocketProxy \u003d NovaWebSocketProxyEventlet if not monkey_patch.is_patched("},{"line_number":363,"context_line":") else NovaWebSocketProxyThread"}],"source_content_type":"text/x-python","patch_set":4,"id":"7fbfe8b7_fcbc3e7f","line":363,"in_reply_to":"0c8205c1_6555a046","updated":"2026-03-30 06:12:32.000000000","message":"Done","commit_id":"13abdf52a9033062b33a1c2909c9f6d0ca98feaf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0b4ddcfc4cdf3019fc6d9e618966ab78495dcd5d","unresolved":true,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def new_websocket_client(self):"},{"line_number":168,"context_line":"        \"\"\"Called after a new WebSocket connection has been established.\"\"\""},{"line_number":169,"context_line":"        # Reopen the eventlet hub to make sure we don\u0027t share an epoll"},{"line_number":170,"context_line":"        # fd with parent and/or siblings, which would be bad"},{"line_number":171,"context_line":"        if not utils.concurrency_mode_threading():"},{"line_number":172,"context_line":"            from eventlet import hubs"},{"line_number":173,"context_line":"            hubs.use_hub()"}],"source_content_type":"text/x-python","patch_set":6,"id":"683a3556_d68d6523","line":170,"range":{"start_line":169,"start_character":0,"end_line":170,"end_character":60},"updated":"2026-03-30 15:11:19.000000000","message":"move the comment into the condition","commit_id":"7913538f7e286285e7f0f3426e426b91fd841aed"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"9329ff1fd1895f0cc5acb804411dba908be049ce","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def new_websocket_client(self):"},{"line_number":168,"context_line":"        \"\"\"Called after a new WebSocket connection has been established.\"\"\""},{"line_number":169,"context_line":"        # Reopen the eventlet hub to make sure we don\u0027t share an epoll"},{"line_number":170,"context_line":"        # fd with parent and/or siblings, which would be bad"},{"line_number":171,"context_line":"        if not utils.concurrency_mode_threading():"},{"line_number":172,"context_line":"            from eventlet import hubs"},{"line_number":173,"context_line":"            hubs.use_hub()"}],"source_content_type":"text/x-python","patch_set":6,"id":"2a737b11_11396eaa","line":170,"range":{"start_line":169,"start_character":0,"end_line":170,"end_character":60},"in_reply_to":"683a3556_d68d6523","updated":"2026-03-31 12:30:44.000000000","message":"Done","commit_id":"7913538f7e286285e7f0f3426e426b91fd841aed"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0b4ddcfc4cdf3019fc6d9e618966ab78495dcd5d","unresolved":true,"context_lines":[{"line_number":310,"context_line":""},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"class NovaWebSocketProxyEventlet("},{"line_number":313,"context_line":"    websockify.WebSocketProxy):"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":316,"context_line":"        \"\"\":param security_proxy: instance of"}],"source_content_type":"text/x-python","patch_set":6,"id":"be0ef974_613e224c","line":313,"updated":"2026-03-30 15:11:19.000000000","message":"nit: I think this fits into a single line as before","commit_id":"7913538f7e286285e7f0f3426e426b91fd841aed"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"9329ff1fd1895f0cc5acb804411dba908be049ce","unresolved":false,"context_lines":[{"line_number":310,"context_line":""},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"class NovaWebSocketProxyEventlet("},{"line_number":313,"context_line":"    websockify.WebSocketProxy):"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":316,"context_line":"        \"\"\":param security_proxy: instance of"}],"source_content_type":"text/x-python","patch_set":6,"id":"6b932ffa_309d6a64","line":313,"in_reply_to":"be0ef974_613e224c","updated":"2026-03-31 12:30:44.000000000","message":"Done","commit_id":"7913538f7e286285e7f0f3426e426b91fd841aed"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e3829958118aada2605396cf701e770667e22d25","unresolved":true,"context_lines":[{"line_number":341,"context_line":""},{"line_number":342,"context_line":"class NovaWebSocketProxyThread("},{"line_number":343,"context_line":"    socketserver.ThreadingMixIn,"},{"line_number":344,"context_line":"    NovaWebSocketProxyEventlet"},{"line_number":345,"context_line":"    ):"},{"line_number":346,"context_line":"    daemon_threads \u003d True  # Threads die when the main process dies"},{"line_number":347,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"95df70a0_8ee04723","line":344,"range":{"start_line":344,"start_character":4,"end_line":344,"end_character":30},"updated":"2026-04-10 22:11:55.000000000","message":"can we flip it? I mean make NovaWebSocketProxyThread L312 and  NovaWebSocketProxyEventlet inherit it. That way, it will be easy to remove the NovaWebSocketProxyEventlet support with a minimal and easy-to-review change. I made a mistake in my RBAC changes, where I made the old RBAC defaults class as a parent, and dropping them needs huge refactoring in test classes. Here, there is not much change, but still it will be helpful to keep NovaWebSocketProxyThread as a parent.","commit_id":"7913538f7e286285e7f0f3426e426b91fd841aed"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"1dd68df0cda3a3752d00eb67018977fc914d675a","unresolved":false,"context_lines":[{"line_number":341,"context_line":""},{"line_number":342,"context_line":"class NovaWebSocketProxyThread("},{"line_number":343,"context_line":"    socketserver.ThreadingMixIn,"},{"line_number":344,"context_line":"    NovaWebSocketProxyEventlet"},{"line_number":345,"context_line":"    ):"},{"line_number":346,"context_line":"    daemon_threads \u003d True  # Threads die when the main process dies"},{"line_number":347,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"2b07f72e_c8bfc780","line":344,"range":{"start_line":344,"start_character":4,"end_line":344,"end_character":30},"in_reply_to":"95df70a0_8ee04723","updated":"2026-04-17 16:55:27.000000000","message":"Done","commit_id":"7913538f7e286285e7f0f3426e426b91fd841aed"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0b4ddcfc4cdf3019fc6d9e618966ab78495dcd5d","unresolved":true,"context_lines":[{"line_number":342,"context_line":"class NovaWebSocketProxyThread("},{"line_number":343,"context_line":"    socketserver.ThreadingMixIn,"},{"line_number":344,"context_line":"    NovaWebSocketProxyEventlet"},{"line_number":345,"context_line":"    ):"},{"line_number":346,"context_line":"    daemon_threads \u003d True  # Threads die when the main process dies"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"482b1f11_38fada5d","line":345,"updated":"2026-03-30 15:11:19.000000000","message":"sorry I wasn\u0027t specific enough.\nIf this does not fit to line length\n```\nclass NovaWebSocketProxyThread(socketserver.ThreadingMixIn, NovaWebSocketProxyEventlet):\n    daemon_threads \u003d ...\n```\nthen this is my preferred wrap to create separation of the class header and the class variable\n```\nclass NovaWebSocketProxyThread(\n    socketserver.ThreadingMixIn, \n    NovaWebSocketProxyEventlet,\n):\n    daemon_threads \u003d ...\n\n```","commit_id":"7913538f7e286285e7f0f3426e426b91fd841aed"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"9329ff1fd1895f0cc5acb804411dba908be049ce","unresolved":false,"context_lines":[{"line_number":342,"context_line":"class NovaWebSocketProxyThread("},{"line_number":343,"context_line":"    socketserver.ThreadingMixIn,"},{"line_number":344,"context_line":"    NovaWebSocketProxyEventlet"},{"line_number":345,"context_line":"    ):"},{"line_number":346,"context_line":"    daemon_threads \u003d True  # Threads die when the main process dies"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"b8d0a7f0_3f1532db","line":345,"in_reply_to":"482b1f11_38fada5d","updated":"2026-03-31 12:30:44.000000000","message":"Done","commit_id":"7913538f7e286285e7f0f3426e426b91fd841aed"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0b4ddcfc4cdf3019fc6d9e618966ab78495dcd5d","unresolved":true,"context_lines":[{"line_number":343,"context_line":"    socketserver.ThreadingMixIn,"},{"line_number":344,"context_line":"    NovaWebSocketProxyEventlet"},{"line_number":345,"context_line":"    ):"},{"line_number":346,"context_line":"    daemon_threads \u003d True  # Threads die when the main process dies"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"if utils.concurrency_mode_threading():"}],"source_content_type":"text/x-python","patch_set":6,"id":"4814d029_2d03f624","line":346,"updated":"2026-03-30 15:11:19.000000000","message":"Could you add a reasoning about this to the commit message?\nIn general (but maybe it is different here) having a thread that is not daemon means at exit the process waits for that thread. What is not clear to me here is that it effect the threads within a proxy process, or it is about the proxy processes itself that are act as a daemon so if the main process exists then the proxy processes just die without being waited on.","commit_id":"7913538f7e286285e7f0f3426e426b91fd841aed"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"9329ff1fd1895f0cc5acb804411dba908be049ce","unresolved":true,"context_lines":[{"line_number":343,"context_line":"    socketserver.ThreadingMixIn,"},{"line_number":344,"context_line":"    NovaWebSocketProxyEventlet"},{"line_number":345,"context_line":"    ):"},{"line_number":346,"context_line":"    daemon_threads \u003d True  # Threads die when the main process dies"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"if utils.concurrency_mode_threading():"}],"source_content_type":"text/x-python","patch_set":6,"id":"89b48480_57469806","line":346,"in_reply_to":"4814d029_2d03f624","updated":"2026-03-31 12:30:44.000000000","message":"So in that case, setting daemon_threads \u003d True forces the proxy server process to exit without waiting for its worker threads to finish: https://docs.python.org/3/library/socketserver.html#socketserver.ThreadingMixIn.daemon_threads . I update comment to be more clear about it","commit_id":"7913538f7e286285e7f0f3426e426b91fd841aed"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"48606cca200484b387f86070bb3cf9aa8d373853","unresolved":true,"context_lines":[{"line_number":343,"context_line":"    socketserver.ThreadingMixIn,"},{"line_number":344,"context_line":"    NovaWebSocketProxyEventlet"},{"line_number":345,"context_line":"    ):"},{"line_number":346,"context_line":"    daemon_threads \u003d True  # Threads die when the main process dies"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"if utils.concurrency_mode_threading():"}],"source_content_type":"text/x-python","patch_set":6,"id":"d5a8284d_0b96272e","line":346,"in_reply_to":"69c75412_2209cee1","updated":"2026-04-01 13:56:41.000000000","message":"Right, with daemon_threads\u003dFalse (the default), the process will wait for the thread spawned (https://github.com/python/cpython/blob/3.14/Lib/socketserver.py#L713) to finish before exiting. That\u0027s exactly why I set daemon_threads\u003dTrue  so the server doesn\u0027t block on shutdown waiting for all in-flight requests to complete","commit_id":"7913538f7e286285e7f0f3426e426b91fd841aed"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"73a5fd7899da7126eacadd746877aea6eec32ab3","unresolved":true,"context_lines":[{"line_number":343,"context_line":"    socketserver.ThreadingMixIn,"},{"line_number":344,"context_line":"    NovaWebSocketProxyEventlet"},{"line_number":345,"context_line":"    ):"},{"line_number":346,"context_line":"    daemon_threads \u003d True  # Threads die when the main process dies"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"if utils.concurrency_mode_threading():"}],"source_content_type":"text/x-python","patch_set":6,"id":"fd4a7d9d_c67885d6","line":346,"in_reply_to":"6bc456d1_25ad10e2","updated":"2026-04-13 15:22:17.000000000","message":"I agree. For some reason, I initially misunderstood the websockify flow and thought process_request was called there, which is the reason I used ThreadingMixIn. However, as you pointed out, websockify uses child processes via multiprocessing rather than threading, making ThreadingMixIn unnecessary here.\n\nI’ve removed the class switching mechanism (NovaWebSocketProxyThread/NovaWebSocketProxyEventlet) and the socketserver import.\nThe previous implementation (with the redundant mixin) was tested and showed no issues. If we encounter problems later and need to move from websockify\u0027s child-process model to true threading, we can explore:\n\n-Overriding WebSockifyServer.start_server() with proper SIGTERM handling.\n\n-Using LibProxyServer (despite its limitations).\n\n-Refactoring the proxying logic into the Handler class.\n\nThanks, @gmaan.os14@gmail.com !","commit_id":"7913538f7e286285e7f0f3426e426b91fd841aed"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4abaef37a596a415e9dcf0586e62e515e63a3f40","unresolved":true,"context_lines":[{"line_number":343,"context_line":"    socketserver.ThreadingMixIn,"},{"line_number":344,"context_line":"    NovaWebSocketProxyEventlet"},{"line_number":345,"context_line":"    ):"},{"line_number":346,"context_line":"    daemon_threads \u003d True  # Threads die when the main process dies"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"if utils.concurrency_mode_threading():"}],"source_content_type":"text/x-python","patch_set":6,"id":"69c75412_2209cee1","line":346,"in_reply_to":"89b48480_57469806","updated":"2026-03-31 17:02:53.000000000","message":"cc @gmaan.os14@gmail.com as this is a graceful shutdown topic. :)\n\nSo if daemon\u003dFalse then during a sigterm none the the children proxy processes would not stop preventing the main process to exit? Hence we need the daemon\u003dtrue?","commit_id":"7913538f7e286285e7f0f3426e426b91fd841aed"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e3829958118aada2605396cf701e770667e22d25","unresolved":true,"context_lines":[{"line_number":343,"context_line":"    socketserver.ThreadingMixIn,"},{"line_number":344,"context_line":"    NovaWebSocketProxyEventlet"},{"line_number":345,"context_line":"    ):"},{"line_number":346,"context_line":"    daemon_threads \u003d True  # Threads die when the main process dies"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"if utils.concurrency_mode_threading():"}],"source_content_type":"text/x-python","patch_set":6,"id":"6bc456d1_25ad10e2","line":346,"in_reply_to":"d5a8284d_0b96272e","updated":"2026-04-10 22:11:55.000000000","message":"I commented about inheriting from ThreadingMixIn in the latest PS, which is no-ops unless I am missing any deep coding logic in websockify. Because of that, daemon_threads\u003dTrue does not do anything on how console requests are handled by websockify.\n\nFor all our proxy service, whenever a new console request comes then websockify.websockifyserver starts a new child process per console, and that child process handles the console request. Closing the console request lets websockify shut down the child process gracefully. For graceful shutdown, websockify raise terminate exception, which is handled by L288 and call NovaProxyRequestHandler._close_connection() method. The Nova _close_connection method calls shutdown() on the socket first and then close(), which makes sure to send the remaining data/frame before closing the socket.\n\nI think removing the evenlet hub is what we need and for threading mode, let websockify usage of select.select() to handle the multiple sockets or fd.\n\nIf we want to move console requests handling from a child-process-model (websockify way) to threading basis, we need to override WebSockifyServer. start_server () and handle the SIGTERM accordingly. That will be a lot of work.","commit_id":"7913538f7e286285e7f0f3426e426b91fd841aed"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f6710fa5e8bc037724b41cdf775818c2d0db774e","unresolved":false,"context_lines":[{"line_number":343,"context_line":"    socketserver.ThreadingMixIn,"},{"line_number":344,"context_line":"    NovaWebSocketProxyEventlet"},{"line_number":345,"context_line":"    ):"},{"line_number":346,"context_line":"    daemon_threads \u003d True  # Threads die when the main process dies"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"if utils.concurrency_mode_threading():"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f68e4ee_481ab53a","line":346,"in_reply_to":"fd4a7d9d_c67885d6","updated":"2026-04-13 22:57:06.000000000","message":"++ but yes, let\u0027s do that as a separate effort if needed. For now, it is good.","commit_id":"7913538f7e286285e7f0f3426e426b91fd841aed"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8ae87b15087514ac6499e3ec66ccfe32cdd3b35d","unresolved":true,"context_lines":[{"line_number":341,"context_line":"class NovaWebSocketProxyThread("},{"line_number":342,"context_line":"    socketserver.ThreadingMixIn,"},{"line_number":343,"context_line":"    NovaWebSocketProxyEventlet"},{"line_number":344,"context_line":"):"},{"line_number":345,"context_line":"    # Worker threads serving individual console sessions are daemonic"},{"line_number":346,"context_line":"    # so the process can exit without waiting for long-lived sessions."},{"line_number":347,"context_line":"    # Threads die when the main process dies"}],"source_content_type":"text/x-python","patch_set":7,"id":"0571d8e9_9ba85ec0","line":344,"updated":"2026-04-01 10:20:06.000000000","message":"nit: we don\u0027t need black formatting in nova 😊\n#keepourlinessmall","commit_id":"e3fe788ec0a9f0cc9549e6ddae1685d4e200098b"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"48606cca200484b387f86070bb3cf9aa8d373853","unresolved":true,"context_lines":[{"line_number":341,"context_line":"class NovaWebSocketProxyThread("},{"line_number":342,"context_line":"    socketserver.ThreadingMixIn,"},{"line_number":343,"context_line":"    NovaWebSocketProxyEventlet"},{"line_number":344,"context_line":"):"},{"line_number":345,"context_line":"    # Worker threads serving individual console sessions are daemonic"},{"line_number":346,"context_line":"    # so the process can exit without waiting for long-lived sessions."},{"line_number":347,"context_line":"    # Threads die when the main process dies"}],"source_content_type":"text/x-python","patch_set":7,"id":"b93ca5ea_eac28fa8","line":344,"in_reply_to":"0571d8e9_9ba85ec0","updated":"2026-04-01 13:56:41.000000000","message":"That was formating suggested by @gibizer@gmail.com","commit_id":"e3fe788ec0a9f0cc9549e6ddae1685d4e200098b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"1cd50feee0ed81a873e44d956de310b88f7c2c93","unresolved":false,"context_lines":[{"line_number":341,"context_line":"class NovaWebSocketProxyThread("},{"line_number":342,"context_line":"    socketserver.ThreadingMixIn,"},{"line_number":343,"context_line":"    NovaWebSocketProxyEventlet"},{"line_number":344,"context_line":"):"},{"line_number":345,"context_line":"    # Worker threads serving individual console sessions are daemonic"},{"line_number":346,"context_line":"    # so the process can exit without waiting for long-lived sessions."},{"line_number":347,"context_line":"    # Threads die when the main process dies"}],"source_content_type":"text/x-python","patch_set":7,"id":"b6745c09_7f9d12bd","line":344,"in_reply_to":"b93ca5ea_eac28fa8","updated":"2026-04-10 10:59:06.000000000","message":"Acknowledged","commit_id":"e3fe788ec0a9f0cc9549e6ddae1685d4e200098b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8ae87b15087514ac6499e3ec66ccfe32cdd3b35d","unresolved":true,"context_lines":[{"line_number":344,"context_line":"):"},{"line_number":345,"context_line":"    # Worker threads serving individual console sessions are daemonic"},{"line_number":346,"context_line":"    # so the process can exit without waiting for long-lived sessions."},{"line_number":347,"context_line":"    # Threads die when the main process dies"},{"line_number":348,"context_line":"    daemon_threads \u003d True"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"747db142_f94f62ca","line":347,"updated":"2026-04-01 10:20:06.000000000","message":"that\u0027s not what I can read from the python docs, right ?\nChanged in version 3.7: ForkingMixIn.server_close and ThreadingMixIn.server_close now waits until all child processes and non-daemonic threads complete. Add a new ForkingMixIn.block_on_close class attribute to opt-in for the pre-3.7 behaviour.\n\n\nhere we set daemon threads, but if the main process dies, those won\u0027t be stopped, right?","commit_id":"e3fe788ec0a9f0cc9549e6ddae1685d4e200098b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"1cd50feee0ed81a873e44d956de310b88f7c2c93","unresolved":false,"context_lines":[{"line_number":344,"context_line":"):"},{"line_number":345,"context_line":"    # Worker threads serving individual console sessions are daemonic"},{"line_number":346,"context_line":"    # so the process can exit without waiting for long-lived sessions."},{"line_number":347,"context_line":"    # Threads die when the main process dies"},{"line_number":348,"context_line":"    daemon_threads \u003d True"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"997223ac_bf6b73e0","line":347,"in_reply_to":"747db142_f94f62ca","updated":"2026-04-10 10:59:06.000000000","message":"Done","commit_id":"e3fe788ec0a9f0cc9549e6ddae1685d4e200098b"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e3829958118aada2605396cf701e770667e22d25","unresolved":true,"context_lines":[{"line_number":167,"context_line":"    def new_websocket_client(self):"},{"line_number":168,"context_line":"        \"\"\"Called after a new WebSocket connection has been established.\"\"\""},{"line_number":169,"context_line":"        if not utils.concurrency_mode_threading():"},{"line_number":170,"context_line":"            # Reopen the eventlet hub to make sure we don\u0027t share an epoll"},{"line_number":171,"context_line":"            # fd with parent and/or siblings, which would be bad"},{"line_number":172,"context_line":"            from eventlet import hubs"},{"line_number":173,"context_line":"            hubs.use_hub()"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        # The nova expected behavior is to have token"},{"line_number":176,"context_line":"        # passed to the method GET of the request"},{"line_number":177,"context_line":"        token \u003d urlparse.parse_qs("}],"source_content_type":"text/x-python","patch_set":11,"id":"e8987161_257ee92e","line":174,"range":{"start_line":170,"start_character":0,"end_line":174,"end_character":0},"updated":"2026-04-10 22:11:55.000000000","message":"This is the key difference between eventlet and threading mode IO and FD are handling are changed from eventlet.hub to select.select(). It is fine to add threading support but before we make it default in proxy services, I will happy to see the performance testing first. If there is downgrade in performance, we may need to implement the console requests handling in different way.","commit_id":"880337cc10ba779f5212fc34519c8e2dd65750f5"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f6710fa5e8bc037724b41cdf775818c2d0db774e","unresolved":false,"context_lines":[{"line_number":167,"context_line":"    def new_websocket_client(self):"},{"line_number":168,"context_line":"        \"\"\"Called after a new WebSocket connection has been established.\"\"\""},{"line_number":169,"context_line":"        if not utils.concurrency_mode_threading():"},{"line_number":170,"context_line":"            # Reopen the eventlet hub to make sure we don\u0027t share an epoll"},{"line_number":171,"context_line":"            # fd with parent and/or siblings, which would be bad"},{"line_number":172,"context_line":"            from eventlet import hubs"},{"line_number":173,"context_line":"            hubs.use_hub()"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        # The nova expected behavior is to have token"},{"line_number":176,"context_line":"        # passed to the method GET of the request"},{"line_number":177,"context_line":"        token \u003d urlparse.parse_qs("}],"source_content_type":"text/x-python","patch_set":11,"id":"46afe5a6_617002f4","line":174,"range":{"start_line":170,"start_character":0,"end_line":174,"end_character":0},"in_reply_to":"e8987161_257ee92e","updated":"2026-04-13 22:57:06.000000000","message":"Done","commit_id":"880337cc10ba779f5212fc34519c8e2dd65750f5"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e3829958118aada2605396cf701e770667e22d25","unresolved":true,"context_lines":[{"line_number":339,"context_line":""},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"class NovaWebSocketProxyThread("},{"line_number":342,"context_line":"    socketserver.ThreadingMixIn,"},{"line_number":343,"context_line":"    NovaWebSocketProxyEventlet"},{"line_number":344,"context_line":"):"},{"line_number":345,"context_line":"    # Worker threads serving individual console sessions are daemonic"}],"source_content_type":"text/x-python","patch_set":11,"id":"f74d3f33_927db2ab","line":342,"range":{"start_line":342,"start_character":3,"end_line":342,"end_character":32},"updated":"2026-04-10 22:11:55.000000000","message":"I did not get the purpose of it WebSocketProxy or WebSockifyServerare not inherrted from socketserver so ThreadingMixInis no-op here. on every console request, WebSockifyServerare .start_server() create a new child process[1] and does not control via threads.\n\n[1] https://github.com/novnc/websockify/blob/a4d6cc5588846ce5405d6da2c8e855a0f504432d/websockify/websockifyserver.py#L859","commit_id":"880337cc10ba779f5212fc34519c8e2dd65750f5"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f6710fa5e8bc037724b41cdf775818c2d0db774e","unresolved":false,"context_lines":[{"line_number":339,"context_line":""},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"class NovaWebSocketProxyThread("},{"line_number":342,"context_line":"    socketserver.ThreadingMixIn,"},{"line_number":343,"context_line":"    NovaWebSocketProxyEventlet"},{"line_number":344,"context_line":"):"},{"line_number":345,"context_line":"    # Worker threads serving individual console sessions are daemonic"}],"source_content_type":"text/x-python","patch_set":11,"id":"c7f9d815_279707b5","line":342,"range":{"start_line":342,"start_character":3,"end_line":342,"end_character":32},"in_reply_to":"f74d3f33_927db2ab","updated":"2026-04-13 22:57:06.000000000","message":"Done","commit_id":"880337cc10ba779f5212fc34519c8e2dd65750f5"}],"playbooks/nova-next/pre.yaml":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"1dd68df0cda3a3752d00eb67018977fc914d675a","unresolved":true,"context_lines":[{"line_number":3,"context_line":"    - name: Install qemu-system-modules-spice for SPICE graphics support"},{"line_number":4,"context_line":"      become: yes"},{"line_number":5,"context_line":"      apt:"},{"line_number":6,"context_line":"        name: qemu-system-modules-spice"},{"line_number":7,"context_line":"        state: present"},{"line_number":8,"context_line":"        update_cache: yes"},{"line_number":9,"context_line":"      when: ansible_os_family \u003d\u003d \u0027Debian\u0027"}],"source_content_type":"text/x-yaml","patch_set":23,"id":"4e7d1344_ab3df593","line":6,"range":{"start_line":6,"start_character":0,"end_line":6,"end_character":39},"updated":"2026-04-17 16:55:27.000000000","message":"++, this also works fine. Spice test is passing now https://zuul.opendev.org/t/openstack/build/7e06602ca4d14f0fadfcf9d54a997bf6/log/job-output.txt#36681","commit_id":"6c3a338862779599af84ce545feb31bf1fa712c9"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e2a43df0ea49c243958b71a9eedd5e4bc170f16d","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    - name: Install qemu-system-modules-spice for SPICE graphics support"},{"line_number":4,"context_line":"      become: yes"},{"line_number":5,"context_line":"      apt:"},{"line_number":6,"context_line":"        name: qemu-system-modules-spice"},{"line_number":7,"context_line":"        state: present"},{"line_number":8,"context_line":"        update_cache: yes"},{"line_number":9,"context_line":"      when: ansible_os_family \u003d\u003d \u0027Debian\u0027"}],"source_content_type":"text/x-yaml","patch_set":23,"id":"140aed00_7b66d26f","line":6,"range":{"start_line":6,"start_character":0,"end_line":6,"end_character":39},"in_reply_to":"4e7d1344_ab3df593","updated":"2026-04-17 16:55:36.000000000","message":"Done","commit_id":"6c3a338862779599af84ce545feb31bf1fa712c9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2e5d91df8edf4d6f760b3cd0670062a44b5acf94","unresolved":true,"context_lines":[{"line_number":6,"context_line":"        name: qemu-system-modules-spice"},{"line_number":7,"context_line":"        state: present"},{"line_number":8,"context_line":"        update_cache: yes"},{"line_number":9,"context_line":"      when: ansible_os_family \u003d\u003d \u0027Debian\u0027"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"- hosts: controller"},{"line_number":12,"context_line":"  tasks:"}],"source_content_type":"text/x-yaml","patch_set":24,"id":"b427d74b_692a84ee","line":9,"updated":"2026-04-22 18:19:35.000000000","message":"this i want to fix in devstack too by the way.\n\ni think i ahve a patch somewhere but this is fine for now.","commit_id":"23be195ce10d81b2a9acd745d54954457c413291"}],"releasenotes/notes/threading-websocketproxy-e563cce57d25582d.yaml":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"1cd50feee0ed81a873e44d956de310b88f7c2c93","unresolved":true,"context_lines":[{"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__"},{"line_number":8,"context_line":"    guide for more details."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"80a9b7ad_74954f14","line":8,"updated":"2026-04-10 10:59:06.000000000","message":"see https://storage.gra.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_71e/openstack/71e0b4b20e83484994f78206be1ae7b5/docs/unreleased.html, the RST link is missing backticks and won\u0027t render as a hyperlink\n\nAlso, add a newline.","commit_id":"6b74f1c9f3049bc2d75cec9b7cfede58f913a9f1"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"ab2173254744a1ee8ffe1a01c1c77a6778014b59","unresolved":false,"context_lines":[{"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__"},{"line_number":8,"context_line":"    guide for more details."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"95030d1d_87a41723","line":8,"in_reply_to":"80a9b7ad_74954f14","updated":"2026-04-10 13:10:17.000000000","message":"Done","commit_id":"6b74f1c9f3049bc2d75cec9b7cfede58f913a9f1"}]}
