)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"2a20b19845249f74c284f0a693ce2e9df69d60e7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"56c90554_109c43fa","updated":"2026-05-27 17:49:18.000000000","message":"just highlighting my vote as per my previous comment stay open.","commit_id":"5cb87286ec8a6b8229ae7ec5bd244accc6efeedc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bbe369678fe581bd87835e85bade822016793893","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"61dd49bf_1d972637","updated":"2026-06-10 11:11:57.000000000","message":"the DNM patch top of this shows novnc tempes failures","commit_id":"357bfdbe35fe5422b9c25c2b4e64cf9f401e75d9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"91ea560d47fb410106587311e16696a6bebfc597","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"0f862c1b_0e1d68a7","updated":"2026-06-17 14:51:38.000000000","message":"Looks good to me","commit_id":"3356917d0ce88baf65c9ce332dc40c202240ea79"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"2c4d9c97bc45ac2aee82371c39c6daf76d32af73","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"662ba25a_a9484f0e","updated":"2026-06-18 01:22:30.000000000","message":"lgtm, let\u0027s merge it","commit_id":"3356917d0ce88baf65c9ce332dc40c202240ea79"}],"nova/cmd/baseproxy.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f7f71faadf7e970667b468489667a28e56d5fd2c","unresolved":true,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    gmr.TextGuruMeditation.setup_autorun(version, conf\u003dCONF)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    if utils.concurrency_mode_threading():"},{"line_number":75,"context_line":"        # Python 3.14 changed the default multiprocessing start method from"},{"line_number":76,"context_line":"        # \u0027fork\u0027 to \u0027forkserver\u0027 on Linux (gh-84559). websockify\u0027s daemon mode"},{"line_number":77,"context_line":"        # uses multiprocessing internally, so explicitly restore \u0027fork\u0027 to"}],"source_content_type":"text/x-python","patch_set":1,"id":"947ee7e3_08ef6769","line":74,"updated":"2026-05-08 08:35:06.000000000","message":"Did we have a problem in eventlet mode due to monkey patching breaking pickling?","commit_id":"9b0908cae9796f8dc194fbc995d454ea61f6f667"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"0ae00a4e8a23fbd176e83b17a0e53b9cba512787","unresolved":true,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    gmr.TextGuruMeditation.setup_autorun(version, conf\u003dCONF)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    if utils.concurrency_mode_threading():"},{"line_number":75,"context_line":"        # Python 3.14 changed the default multiprocessing start method from"},{"line_number":76,"context_line":"        # \u0027fork\u0027 to \u0027forkserver\u0027 on Linux (gh-84559). websockify\u0027s daemon mode"},{"line_number":77,"context_line":"        # uses multiprocessing internally, so explicitly restore \u0027fork\u0027 to"}],"source_content_type":"text/x-python","patch_set":1,"id":"218b4ecc_a782d6dc","line":74,"in_reply_to":"947ee7e3_08ef6769","updated":"2026-06-15 07:45:40.000000000","message":"Yes, we had a problem in wventlet due to monkey-patching and pickling issues. And it appears tah we also have a general issue with what we pass to websockify, even in threading mode. Unfortunately, it looks like a silent error there, but switching to fork mode helped avoid the issue","commit_id":"9b0908cae9796f8dc194fbc995d454ea61f6f667"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"8a2efcb5d2dbcae39512d01e94f8a7e14c3daf3f","unresolved":true,"context_lines":[{"line_number":76,"context_line":"        # \u0027fork\u0027 to \u0027forkserver\u0027 on Linux (gh-84559). websockify\u0027s daemon mode"},{"line_number":77,"context_line":"        # uses multiprocessing internally, so explicitly restore \u0027fork\u0027 to"},{"line_number":78,"context_line":"        # preserve the previous behaviour and avoid pickling failures."},{"line_number":79,"context_line":"        multiprocessing.set_start_method(\u0027fork\u0027, force\u003dTrue)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    # Create and start the NovaWebSockets proxy"},{"line_number":82,"context_line":"    websocketproxy.NovaWebSocketProxy("}],"source_content_type":"text/x-python","patch_set":2,"id":"2e59c8c5_ea93898e","line":79,"range":{"start_line":79,"start_character":0,"end_line":79,"end_character":60},"updated":"2026-05-14 17:39:15.000000000","message":"I do not think it will set the start method for websockify. As per my finding (maybe you can investigate more), there is no way to pass the start method to websockify and it directly create the process as per default setting\n\n- https://github.com/novnc/websockify/blob/a4d6cc5588846ce5405d6da2c8e855a0f504432d/websockify/websockifyserver.py#L859\n\nIf we want nova to set it explicitly then we need change in websockify first. either:\n- websockify take the multiprocessing start method in WebSocketProxy __init__() method and use the same when start_server() create the separate process for each console request.\n- or start_server() method itself take the start method as a arg and use the same while creating the process.\n\nI think former is better if (or in future) websockify create process somewhere else also","commit_id":"1793f96c0a8e9731dd0e7f5ba7cb5bf4206784a1"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d45168b5a0ed5a00e4166771f9a230fe6a2100c9","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        # \u0027fork\u0027 to \u0027forkserver\u0027 on Linux (gh-84559). websockify\u0027s daemon mode"},{"line_number":77,"context_line":"        # uses multiprocessing internally, so explicitly restore \u0027fork\u0027 to"},{"line_number":78,"context_line":"        # preserve the previous behaviour and avoid pickling failures."},{"line_number":79,"context_line":"        multiprocessing.set_start_method(\u0027fork\u0027, force\u003dTrue)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    # Create and start the NovaWebSockets proxy"},{"line_number":82,"context_line":"    websocketproxy.NovaWebSocketProxy("}],"source_content_type":"text/x-python","patch_set":2,"id":"990a01d1_299c0ab1","line":79,"range":{"start_line":79,"start_character":0,"end_line":79,"end_character":60},"in_reply_to":"2e59c8c5_ea93898e","updated":"2026-06-11 17:49:31.000000000","message":"Going back to this comment, I re-checked it, and yes, set_start_method() changes the global state and any further multiprocessing.Process call will use the spawn as the default mode.","commit_id":"1793f96c0a8e9731dd0e7f5ba7cb5bf4206784a1"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"874820a4faf4ccbb82bc79973a70fa0b31519474","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from nova.conf import novnc"},{"line_number":33,"context_line":"from nova.console import websocketproxy"},{"line_number":34,"context_line":"from nova import objects"},{"line_number":35,"context_line":"from nova import utils"},{"line_number":36,"context_line":"from nova import version"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"dd74104c_3d49414f","line":35,"updated":"2026-06-11 12:06:30.000000000","message":"pep8: F401 \u0027nova.utils\u0027 imported but unused","commit_id":"24ccf457fb025f6a95e524d26921b0af8906ccac"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ed0a3484a640e68829d081da52476143fa8838e1","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from nova.conf import novnc"},{"line_number":33,"context_line":"from nova.console import websocketproxy"},{"line_number":34,"context_line":"from nova import objects"},{"line_number":35,"context_line":"from nova import utils"},{"line_number":36,"context_line":"from nova import version"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"15980ca4_81e463a3","line":35,"in_reply_to":"dd74104c_3d49414f","updated":"2026-06-12 15:58:30.000000000","message":"ya that woudl be nice to fix","commit_id":"24ccf457fb025f6a95e524d26921b0af8906ccac"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ed0a3484a640e68829d081da52476143fa8838e1","unresolved":true,"context_lines":[{"line_number":75,"context_line":"    # \u0027fork\u0027 to \u0027forkserver\u0027 on Linux (gh-84559). websockify\u0027s daemon mode"},{"line_number":76,"context_line":"    # uses multiprocessing internally, so explicitly restore \u0027fork\u0027 to"},{"line_number":77,"context_line":"    # preserve the previous behaviour and avoid pickling failures."},{"line_number":78,"context_line":"    multiprocessing.set_start_method(\u0027fork\u0027, force\u003dTrue)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    # Create and start the NovaWebSockets proxy"},{"line_number":81,"context_line":"    websocketproxy.NovaWebSocketProxy("}],"source_content_type":"text/x-python","patch_set":6,"id":"da1913b2_2e2cbfe6","line":78,"updated":"2026-06-12 15:58:30.000000000","message":"i tested this with https://review.opendev.org/c/openstack/devstack/+/993091/2?tab\u003dchange-view-tab-header-zuul-results-summary\n\nhttps://f91c9fae7df414f526d4-76db863cb86d059bc445c2f80e5d4947.ssl.cf2.rackcdn.com/openstack/450236d3cb9b4232a6cdc0d80fe482e3/testr_results.html\n\nfor now im just going to turn off novnc as teh workaroudn on the 26.04 job and then update the followup patch to depnd on this and renable it","commit_id":"24ccf457fb025f6a95e524d26921b0af8906ccac"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f0625ba5501c89ab444f2c0631a5e0dd4c7c253d","unresolved":true,"context_lines":[{"line_number":75,"context_line":"    # \u0027fork\u0027 to \u0027forkserver\u0027 on Linux (gh-84559). websockify\u0027s daemon mode"},{"line_number":76,"context_line":"    # uses multiprocessing internally, so explicitly restore \u0027fork\u0027 to"},{"line_number":77,"context_line":"    # preserve the previous behaviour and avoid pickling failures."},{"line_number":78,"context_line":"    multiprocessing.set_start_method(\u0027fork\u0027, force\u003dTrue)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    # Create and start the NovaWebSockets proxy"},{"line_number":81,"context_line":"    websocketproxy.NovaWebSocketProxy("}],"source_content_type":"text/x-python","patch_set":6,"id":"a21afd70_060203c8","line":78,"in_reply_to":"63aebab7_31cf8c0c","updated":"2026-06-17 20:34:27.000000000","message":"i can also test that but this is neded to fix both eventlet and threaded mode\n\nill add a third patch for thread mode quickly before i finish up.","commit_id":"24ccf457fb025f6a95e524d26921b0af8906ccac"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"0be4b5a2f13103609792b2660ec14268a0c69480","unresolved":true,"context_lines":[{"line_number":75,"context_line":"    # \u0027fork\u0027 to \u0027forkserver\u0027 on Linux (gh-84559). websockify\u0027s daemon mode"},{"line_number":76,"context_line":"    # uses multiprocessing internally, so explicitly restore \u0027fork\u0027 to"},{"line_number":77,"context_line":"    # preserve the previous behaviour and avoid pickling failures."},{"line_number":78,"context_line":"    multiprocessing.set_start_method(\u0027fork\u0027, force\u003dTrue)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    # Create and start the NovaWebSockets proxy"},{"line_number":81,"context_line":"    websocketproxy.NovaWebSocketProxy("}],"source_content_type":"text/x-python","patch_set":6,"id":"63aebab7_31cf8c0c","line":78,"in_reply_to":"a0c734e0_def03464","updated":"2026-06-17 17:28:53.000000000","message":"THanks for testing. I confirm that it was failing on python 3.14 in https://zuul.opendev.org/t/openstack/build/0b9ac7e0a17648fdb45bf0a9d3d7664e/logs\n\nBut the change enables the novnc on ubuntu 26.04 (py3.14), still running novnc in eventlet mode. I would like to see that running in threading mode and test passing.  I commented on that.\n\nhttps://review.opendev.org/c/openstack/devstack/+/993091","commit_id":"24ccf457fb025f6a95e524d26921b0af8906ccac"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"2c4d9c97bc45ac2aee82371c39c6daf76d32af73","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    # \u0027fork\u0027 to \u0027forkserver\u0027 on Linux (gh-84559). websockify\u0027s daemon mode"},{"line_number":76,"context_line":"    # uses multiprocessing internally, so explicitly restore \u0027fork\u0027 to"},{"line_number":77,"context_line":"    # preserve the previous behaviour and avoid pickling failures."},{"line_number":78,"context_line":"    multiprocessing.set_start_method(\u0027fork\u0027, force\u003dTrue)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    # Create and start the NovaWebSockets proxy"},{"line_number":81,"context_line":"    websocketproxy.NovaWebSocketProxy("}],"source_content_type":"text/x-python","patch_set":6,"id":"d1585a75_efa1c908","line":78,"in_reply_to":"a21afd70_060203c8","updated":"2026-06-18 01:22:30.000000000","message":"thanks, all good on threading mode too https://review.opendev.org/c/openstack/devstack/+/993842","commit_id":"24ccf457fb025f6a95e524d26921b0af8906ccac"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"0ae00a4e8a23fbd176e83b17a0e53b9cba512787","unresolved":true,"context_lines":[{"line_number":75,"context_line":"    # \u0027fork\u0027 to \u0027forkserver\u0027 on Linux (gh-84559). websockify\u0027s daemon mode"},{"line_number":76,"context_line":"    # uses multiprocessing internally, so explicitly restore \u0027fork\u0027 to"},{"line_number":77,"context_line":"    # preserve the previous behaviour and avoid pickling failures."},{"line_number":78,"context_line":"    multiprocessing.set_start_method(\u0027fork\u0027, force\u003dTrue)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    # Create and start the NovaWebSockets proxy"},{"line_number":81,"context_line":"    websocketproxy.NovaWebSocketProxy("}],"source_content_type":"text/x-python","patch_set":6,"id":"a0c734e0_def03464","line":78,"in_reply_to":"da1913b2_2e2cbfe6","updated":"2026-06-15 07:45:40.000000000","message":"thanks!","commit_id":"24ccf457fb025f6a95e524d26921b0af8906ccac"}]}
