)]}'
{".gitignore":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"ab25190fb579c771ae5c8909ce3bee42cffdcf90","unresolved":true,"context_lines":[{"line_number":58,"context_line":"releasenotes/notes/reno.cache"},{"line_number":59,"context_line":"RELEASENOTES.rst"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"# ide files"},{"line_number":62,"context_line":".idea"},{"line_number":63,"context_line":".vscode"},{"line_number":64,"context_line":".venv"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"4bda8020_8638e978","line":64,"range":{"start_line":61,"start_character":0,"end_line":64,"end_character":5},"updated":"2024-04-03 07:41:34.000000000","message":"I\u0027d suggest to put it in your personal `~/.gitignore` and then you could add this file into your git config by using:\n\n```\n$ git config --global core.excludesFile \u0027~/.gitignore\u0027\n```\n\nOnce done, you would be able to add there every rules you need.","commit_id":"a6216acc3ba4114390a20eb0194cc5eec10e0157"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"ee1cbba29c0872bfb0d3a34d0b1fe70c8f46f72a","unresolved":false,"context_lines":[{"line_number":58,"context_line":"releasenotes/notes/reno.cache"},{"line_number":59,"context_line":"RELEASENOTES.rst"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"# ide files"},{"line_number":62,"context_line":".idea"},{"line_number":63,"context_line":".vscode"},{"line_number":64,"context_line":".venv"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"26d8ec71_fb21d49b","line":64,"range":{"start_line":61,"start_character":0,"end_line":64,"end_character":5},"in_reply_to":"4bda8020_8638e978","updated":"2024-04-03 23:52:24.000000000","message":"Done","commit_id":"a6216acc3ba4114390a20eb0194cc5eec10e0157"}],"/COMMIT_MSG":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"0609f5ff7fa2a9ab7e1fc6ea3455fe3662ca111d","unresolved":true,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Changes include:"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"- Removing reliance on ssl.wrap which is depreciated in python 3.12"},{"line_number":18,"context_line":"- A new gunicorn wsgi server that is non-blocking"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: Ic87860be22edbde5d72ccf6ae751ae2aafd0fed2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"f3c8efd7_6449c3d7","line":17,"range":{"start_line":17,"start_character":2,"end_line":17,"end_character":67},"updated":"2024-04-03 15:57:48.000000000","message":"Should go to a different patch or being abandoned in favor of https://review.opendev.org/c/openstack/oslo.service/+/910502\n\nIMO, reusing 910502 to rebase your changes could be an option.","commit_id":"a6216acc3ba4114390a20eb0194cc5eec10e0157"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"ee1cbba29c0872bfb0d3a34d0b1fe70c8f46f72a","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Changes include:"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"- Removing reliance on ssl.wrap which is depreciated in python 3.12"},{"line_number":18,"context_line":"- A new gunicorn wsgi server that is non-blocking"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: Ic87860be22edbde5d72ccf6ae751ae2aafd0fed2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"2e48efda_90ef1fb3","line":17,"range":{"start_line":17,"start_character":2,"end_line":17,"end_character":67},"in_reply_to":"f3c8efd7_6449c3d7","updated":"2024-04-03 23:52:24.000000000","message":"Rebase completed :))","commit_id":"a6216acc3ba4114390a20eb0194cc5eec10e0157"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"0609f5ff7fa2a9ab7e1fc6ea3455fe3662ca111d","unresolved":true,"context_lines":[{"line_number":15,"context_line":"Changes include:"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"- Removing reliance on ssl.wrap which is depreciated in python 3.12"},{"line_number":18,"context_line":"- A new gunicorn wsgi server that is non-blocking"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: Ic87860be22edbde5d72ccf6ae751ae2aafd0fed2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"fb3c1fa4_bff1e0d0","line":18,"range":{"start_line":18,"start_character":2,"end_line":18,"end_character":49},"updated":"2024-04-03 15:57:48.000000000","message":"Same thing, I think this topic will require a separated patch/commit. Depending on how you decide to refactor your changes, this patch could host the gunicorn part and could be rebased over 910502","commit_id":"a6216acc3ba4114390a20eb0194cc5eec10e0157"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"5c166e20c6c217e39ef3c72910e38396f871edca","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Changes include:"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"- Removing reliance on ssl.wrap which is depreciated in python 3.12"},{"line_number":18,"context_line":"- A new gunicorn wsgi server that is non-blocking"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: Ic87860be22edbde5d72ccf6ae751ae2aafd0fed2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"8d1a05a7_b0a606b1","line":18,"range":{"start_line":18,"start_character":2,"end_line":18,"end_character":49},"in_reply_to":"fb3c1fa4_bff1e0d0","updated":"2024-04-03 23:53:04.000000000","message":"Done","commit_id":"a6216acc3ba4114390a20eb0194cc5eec10e0157"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"4a0f8c6c14f4508890cc95c32fa603c06bcedc89","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"45254c97_bd4aa1b3","updated":"2024-04-03 07:30:49.000000000","message":"I still have to read the governance goal proposed by Stephen to ensure that both topics (Stephen\u0027s one, and yours) are compatible and could be done in parallel.\n\nhttps://review.opendev.org/c/openstack/governance/+/902807","commit_id":"a6216acc3ba4114390a20eb0194cc5eec10e0157"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"d0856323eb9d711bee43cbd526520392650dea7f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"0dace2f0_55c8fa4d","updated":"2024-04-03 07:24:06.000000000","message":"I\u0027d suggest to first solve the various linters errors.","commit_id":"a6216acc3ba4114390a20eb0194cc5eec10e0157"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"5a77de7a04c181213caf8aa1e76efc329c831daf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"19b26446_1740056f","updated":"2024-04-05 01:14:08.000000000","message":"Still cannot get tests to pass, but I have added more comments for exactly what error lead me to try reloading different modules.","commit_id":"7ccc6dc6ecfe361766de28551fffabcaccb7188c"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"49db181f80df97e91f4a584c5f8411a4c226c330","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":7,"id":"e39dd66b_d5cad514","updated":"2024-04-05 01:15:52.000000000","message":"Still cannot get tests to pass, but I have added more comments for exactly what error lead me to try reloading different modules.\n\nI do not know how helpful this is know, as changing the order of these reload imports changes the error...","commit_id":"7ccc6dc6ecfe361766de28551fffabcaccb7188c"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"d24c50ea6a205ce6456623f6f11ee75b32a1beae","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"82630d74_a68270c1","in_reply_to":"e39dd66b_d5cad514","updated":"2024-04-05 01:37:18.000000000","message":"Done","commit_id":"7ccc6dc6ecfe361766de28551fffabcaccb7188c"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"fba5e12f5e4f9be08d4019149a5d2af6698e6562","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"44820742_f0bddbd3","updated":"2024-04-05 11:40:42.000000000","message":"I\u0027d encourage you to have a look to the cotyledon project before going further\n\nhttps://github.com/sileht/cotyledon\n\nThe project was originated in an Openstack context, and has been created by former Openstack maintainers.\n\nIts goal is to replace oslo.service and open the door for an eventual replacement of Eventlet from Openstack.\n\nCotyledon offer WSGI features etc... Cotyledon is already used in Openstack, more precisely in Telemetry https://docs.openstack.org/newton/admin-guide/telemetry.html\n\nSee the various occurences here https://codesearch.openstack.org/?q\u003dcotyledon\u0026i\u003dnope\u0026literal\u003dnope\u0026files\u003d\u0026excludeFiles\u003d\u0026repos\u003d\n\nRather than sculpting oslo.service to transform it to something that looks like cotyledon, I\u0027d rather encourage directly using cotyledon, and then simply migrate oslo.service usages to cotyledon usages. That would simply translate by refactoring ironic-python-agent (IPA) to migrate from oslo.service to cotyledon.\n\nThat would also allow us to collect experience, and encourage other oslo.service users to move to cotyledon. This topic could be incorporated as a step of the community goal related to migrate off of Eventlet. We already have a point to track replacement candidates for various library. This topic would fit perfectly with that point.\n\nhttps://review.opendev.org/c/openstack/governance/+/902585","commit_id":"4ef1294935ceb07db9c11b3284a0be4ebb7e90f7"}],"oslo_service/tests/__init__.py":[{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"d24c50ea6a205ce6456623f6f11ee75b32a1beae","unresolved":true,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import eventlet"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"# if os.name \u003d\u003d \u0027nt\u0027:"},{"line_number":18,"context_line":"#     # eventlet monkey patching the os and thread modules causes"},{"line_number":19,"context_line":"#     # subprocess.Popen to fail on Windows when using pipes due"},{"line_number":20,"context_line":"#     # to missing non-blocking IO support."}],"source_content_type":"text/x-python","patch_set":8,"id":"b92ed5ee_b52c8d16","line":17,"updated":"2024-04-05 01:37:18.000000000","message":"I imagine this will help me make progress on getting this one test to pass, but I will need to come up with a way to only call this some of the time, maybe a decorator?","commit_id":"4ef1294935ceb07db9c11b3284a0be4ebb7e90f7"}],"oslo_service/wsgi_new.py":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"f27a885baba1352b24f5db0140c2d15d9e7ef84f","unresolved":true,"context_lines":[{"line_number":13,"context_line":"}"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"class Server(BaseApplication):"},{"line_number":17,"context_line":"    def __init__(self, conf, name, app, host\u003dNone, port\u003dNone, use_ssl\u003dTrue):"},{"line_number":18,"context_line":"        self.name \u003d name"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"e8b8ef75_206dbf3e","line":16,"range":{"start_line":16,"start_character":6,"end_line":16,"end_character":12},"updated":"2024-04-03 07:51:28.000000000","message":"Would be good to add some docstrings.","commit_id":"a6216acc3ba4114390a20eb0194cc5eec10e0157"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"5c166e20c6c217e39ef3c72910e38396f871edca","unresolved":true,"context_lines":[{"line_number":13,"context_line":"}"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"class Server(BaseApplication):"},{"line_number":17,"context_line":"    def __init__(self, conf, name, app, host\u003dNone, port\u003dNone, use_ssl\u003dTrue):"},{"line_number":18,"context_line":"        self.name \u003d name"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"c1d35fe8_89c88664","line":16,"range":{"start_line":16,"start_character":6,"end_line":16,"end_character":12},"in_reply_to":"e8b8ef75_206dbf3e","updated":"2024-04-03 23:53:04.000000000","message":"As I work on this, I will move it into a better location and add docstrings.","commit_id":"a6216acc3ba4114390a20eb0194cc5eec10e0157"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"6e0738dff33d13c157708770802f9be015569156","unresolved":true,"context_lines":[{"line_number":83,"context_line":"        self.pid.start()"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        import eventlet"},{"line_number":86,"context_line":"        eventlet.monkey_patch(os\u003dFalse, thread\u003dFalse)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def stop(self):"},{"line_number":89,"context_line":"        \"\"\"Stop the server process.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"e2af8e23_d997b456","line":86,"range":{"start_line":86,"start_character":8,"end_line":86,"end_character":53},"updated":"2024-04-04 07:59:59.000000000","message":"What are you trying to do here? Are you trying to disable monkey patching or are you trying to monkey patch a restrained version of the stdlib?\n\nIf I correctly understood your intentions, the goal of this file is to host the WSGI logic. Hence, this file could be used in a patched and in a non patched environment (free from Eventlet), as you did in `eventlet_wsgi.py` and in `gunicorn_wsgi.py`, isn\u0027t?\n\nIMO we shouldn\u0027t have eventlet calls in this module, or at least, if calls exists they should be made only to restore the original patched module, example:\n\nhttps://opendev.org/openstack/oslo.messaging/src/branch/master/oslo_messaging/_drivers/impl_rabbit.py#L761\n\nYou could use the oslo.utils eventletutils module to implement the same kind of logic:\n\nhttps://opendev.org/openstack/oslo.utils/src/branch/master/oslo_utils/eventletutils.py\n\nThe problem of calling `eventlet.monkey_patch` here is that you patch modules even if your parent caller is free from Eventlet. By example if your entry point is `gunicorn_wsgi`, by patching here, part of your stacks would be polluated by Eventlet, even if Eventlet is not needed in the gunicorn context. Usually that\u0027s the main module that patch all its stack at startup, hence patching all children and instantiated modules. The context is given by the main entry point (__init__, __main__, whatever first module called, depending on if you implement a library or an application etc...). If this way of using Eventlet is applied, then Eventlet dripping in all over the stack. Eventlet is a slimy and liquid things. Users should think twice before monkey patching their env.\n\nThe promise of Eventlet is to turn existing code into non blocking code without changing anything, that\u0027s promise is not true. Several are the side effects of patching an existing applications. Race condition and deadlocks appears, restores of stdlibs modules are needed, etc... etc... At the end the existing code should be adapted. The promise is never kept. Promises only bind those who believe them.\n\nDisenchantment!","commit_id":"f02d71709aa2cd33674a6600f768ae9c45f85281"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"2f76deced0b15c49e6a5068c55d473614631e167","unresolved":true,"context_lines":[{"line_number":83,"context_line":"        self.pid.start()"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        import eventlet"},{"line_number":86,"context_line":"        eventlet.monkey_patch(os\u003dFalse, thread\u003dFalse)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def stop(self):"},{"line_number":89,"context_line":"        \"\"\"Stop the server process.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"c8bcdd74_c27bee56","line":86,"range":{"start_line":86,"start_character":8,"end_line":86,"end_character":53},"in_reply_to":"cb277f2c_711276cc","updated":"2024-04-05 00:10:57.000000000","message":"See the above comment for the reasoning behind why this was here.","commit_id":"f02d71709aa2cd33674a6600f768ae9c45f85281"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"1dbe5d44c2f6dea2789ce255dc55dbc88a552fc6","unresolved":true,"context_lines":[{"line_number":83,"context_line":"        self.pid.start()"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        import eventlet"},{"line_number":86,"context_line":"        eventlet.monkey_patch(os\u003dFalse, thread\u003dFalse)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def stop(self):"},{"line_number":89,"context_line":"        \"\"\"Stop the server process.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"cb277f2c_711276cc","line":86,"range":{"start_line":86,"start_character":8,"end_line":86,"end_character":53},"in_reply_to":"e2af8e23_d997b456","updated":"2024-04-04 23:58:14.000000000","message":"Hey,\n\nYes - I probably should have explained in detail why this is here.\n\nYou are 100% correct, it is not needed for it to run, and I have not included it when I was writing it originally. But it seems, for testing purposes, I might need to do shenanigans for exactly this reason - eventlets monkey patching seems to be escaping in different places.\n\nI will continue to experiment... maybe I accidentally patched somewhere.","commit_id":"f02d71709aa2cd33674a6600f768ae9c45f85281"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"a69a4f1ed33ff8b55fb9bc67e7504149a98c6235","unresolved":true,"context_lines":[{"line_number":72,"context_line":"        return self.application"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def start(self):"},{"line_number":75,"context_line":"        # import importlib"},{"line_number":76,"context_line":"        # importlib.reload(os)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        # Start self.run in a new process"}],"source_content_type":"text/x-python","patch_set":6,"id":"f895b909_82dbeccf","line":75,"updated":"2024-04-05 00:04:53.000000000","message":"Okay so - I made sure that I do not call monkey patch in TestWSGIServerWithSSLEventLetOff.\n\nWith these lines commented, my error when running tox -e py3 includes...\n\n  File \"/home/coder/projects/openstack/oslo.service/.tox/py3/lib/python3.8/site-packages/eventlet/green/os.py\", line 117, in open\n    fd \u003d __original_open__(file, flags, mode)\nFileNotFoundError: [Errno 2] No such file or directory: \u0027/tmp/tmpm96pb02x/wgunicorn-51fpt9ib\u0027\n\nBut with these uncommented I get...\n\n  File \"/usr/lib/python3.8/tempfile.py\", line 389, in _mkstemp_inner\n    fd \u003d _os.open(file, flags, 0o600)\nFileNotFoundError: [Errno 2] No such file or directory: \u0027/tmp/tmpngt0cr8k/wgunicorn-eqns_k9k\u0027\n\nMy reason earlier for then re-patching was an attempt to have only the gunicorn process have os \"unpatched\" - it seemed to be working for me? But I do agree, its nasty and I will remove it for now and see how I get on.\n\nWe might just need a seperate test suite if I cannot isolate eventlet.","commit_id":"cef8f17cbc03a2b04afd5bcf835eb6c5cb165292"}],"temp/eventlet_wsgi.py":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"f27a885baba1352b24f5db0140c2d15d9e7ef84f","unresolved":true,"context_lines":[{"line_number":12,"context_line":"sslutils.register_opts(CONF)"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"def app_factory(global_config, **local_conf):"},{"line_number":16,"context_line":"    def application(environ, start_response):"},{"line_number":17,"context_line":"        status \u003d \"200 OK\""},{"line_number":18,"context_line":"        headers \u003d [(\"Content-type\", \"text/plain\")]"}],"source_content_type":"text/x-python","patch_set":2,"id":"b236126d_98217b52","line":15,"range":{"start_line":15,"start_character":4,"end_line":15,"end_character":15},"updated":"2024-04-03 07:51:28.000000000","message":"Would be good to add some docstrings (for this module).","commit_id":"a6216acc3ba4114390a20eb0194cc5eec10e0157"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"6e0738dff33d13c157708770802f9be015569156","unresolved":true,"context_lines":[{"line_number":12,"context_line":"sslutils.register_opts(CONF)"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"def app_factory(global_config, **local_conf):"},{"line_number":16,"context_line":"    def application(environ, start_response):"},{"line_number":17,"context_line":"        status \u003d \"200 OK\""},{"line_number":18,"context_line":"        headers \u003d [(\"Content-type\", \"text/plain\")]"}],"source_content_type":"text/x-python","patch_set":2,"id":"c19d6f25_3ef5c83f","line":15,"range":{"start_line":15,"start_character":4,"end_line":15,"end_character":15},"in_reply_to":"331b3f35_5c05e938","updated":"2024-04-04 07:59:59.000000000","message":"indeed, sorry I missed the temporary nature of these files.","commit_id":"a6216acc3ba4114390a20eb0194cc5eec10e0157"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"ee1cbba29c0872bfb0d3a34d0b1fe70c8f46f72a","unresolved":true,"context_lines":[{"line_number":12,"context_line":"sslutils.register_opts(CONF)"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"def app_factory(global_config, **local_conf):"},{"line_number":16,"context_line":"    def application(environ, start_response):"},{"line_number":17,"context_line":"        status \u003d \"200 OK\""},{"line_number":18,"context_line":"        headers \u003d [(\"Content-type\", \"text/plain\")]"}],"source_content_type":"text/x-python","patch_set":2,"id":"331b3f35_5c05e938","line":15,"range":{"start_line":15,"start_character":4,"end_line":15,"end_character":15},"in_reply_to":"b236126d_98217b52","updated":"2024-04-03 23:52:24.000000000","message":"These files are temporary. Do you see a world where they are included as examples in the docs? That could work, and I can document them appropriately.\n\nMaybe we make a \"testing oslo\" guide, including how I generated the keys etc.","commit_id":"a6216acc3ba4114390a20eb0194cc5eec10e0157"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"1dbe5d44c2f6dea2789ce255dc55dbc88a552fc6","unresolved":false,"context_lines":[{"line_number":12,"context_line":"sslutils.register_opts(CONF)"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"def app_factory(global_config, **local_conf):"},{"line_number":16,"context_line":"    def application(environ, start_response):"},{"line_number":17,"context_line":"        status \u003d \"200 OK\""},{"line_number":18,"context_line":"        headers \u003d [(\"Content-type\", \"text/plain\")]"}],"source_content_type":"text/x-python","patch_set":2,"id":"a84692e2_4535565a","line":15,"range":{"start_line":15,"start_character":4,"end_line":15,"end_character":15},"in_reply_to":"c19d6f25_3ef5c83f","updated":"2024-04-04 23:58:14.000000000","message":"Done","commit_id":"a6216acc3ba4114390a20eb0194cc5eec10e0157"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"6e0738dff33d13c157708770802f9be015569156","unresolved":true,"context_lines":[{"line_number":19,"context_line":"from oslo_config import cfg"},{"line_number":20,"context_line":"from oslo_service import sslutils, wsgi"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"eventlet.monkey_patch()"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"# Register SSL options"},{"line_number":25,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":5,"id":"c758169f_8f6045ac","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":23},"updated":"2024-04-04 07:59:59.000000000","message":"This monkey patching should be made just after the import of Eventlet, hence it will patchs all the stack and the next imports (wsgi, sslutils, etc...). Else you will get a context with greenthreads and native threads, leading you to nonsense like `Unhandled exception in main loop`.\n\nOnce done, you have to restore the module that you don\u0027t want to see patched. See my comment in `wsgi_new`. Let me warn you, that\u0027s a difficult exercise. It is easy to forgot something and to observe bug months later.\n\nI don\u0027t know how \"ironic\" heavily rely on Eventlet. Maybe an approach would be to reserve this new gunicorn module to only non monkey patched contexts. By example, it would be easy to only check if we are in a monkey patched env, and to raise an error if one try to load this new gunicorn module in such an env. The gunicorn module would be a module only authorized in non monkey patched env...\n\nI don\u0027t have all the context of your idea. Maybe it would be worth proposing an oslo spec first.","commit_id":"f02d71709aa2cd33674a6600f768ae9c45f85281"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"fba5e12f5e4f9be08d4019149a5d2af6698e6562","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from oslo_config import cfg"},{"line_number":20,"context_line":"from oslo_service import sslutils, wsgi"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"eventlet.monkey_patch()"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"# Register SSL options"},{"line_number":25,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":5,"id":"8b9206a0_5d432aea","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":23},"in_reply_to":"3ba508a0_8a2be925","updated":"2024-04-05 11:40:42.000000000","message":"You could ignore the pep8 error by suffixing the line with `# noqa`.","commit_id":"f02d71709aa2cd33674a6600f768ae9c45f85281"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"1dbe5d44c2f6dea2789ce255dc55dbc88a552fc6","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from oslo_config import cfg"},{"line_number":20,"context_line":"from oslo_service import sslutils, wsgi"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"eventlet.monkey_patch()"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"# Register SSL options"},{"line_number":25,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":5,"id":"3ba508a0_8a2be925","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":23},"in_reply_to":"c758169f_8f6045ac","updated":"2024-04-04 23:58:14.000000000","message":"Hmm. I did this because I was getting a pep8 error - it doesn\u0027t seem to be related to my issue.","commit_id":"f02d71709aa2cd33674a6600f768ae9c45f85281"}],"temp/gunicorn_wsgi.py":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"f27a885baba1352b24f5db0140c2d15d9e7ef84f","unresolved":true,"context_lines":[{"line_number":8,"context_line":"sslutils.register_opts(CONF)"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"def app_factory(global_config, **local_conf):"},{"line_number":12,"context_line":"    def application(environ, start_response):"},{"line_number":13,"context_line":"        status \u003d \"200 OK\""},{"line_number":14,"context_line":"        headers \u003d [(\"Content-type\", \"text/plain\")]"}],"source_content_type":"text/x-python","patch_set":2,"id":"6b9e32f2_49a08d95","line":11,"range":{"start_line":11,"start_character":4,"end_line":11,"end_character":15},"updated":"2024-04-03 07:51:28.000000000","message":"Would be good to add some docstrings (for this module).","commit_id":"a6216acc3ba4114390a20eb0194cc5eec10e0157"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"ee1cbba29c0872bfb0d3a34d0b1fe70c8f46f72a","unresolved":false,"context_lines":[{"line_number":8,"context_line":"sslutils.register_opts(CONF)"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"def app_factory(global_config, **local_conf):"},{"line_number":12,"context_line":"    def application(environ, start_response):"},{"line_number":13,"context_line":"        status \u003d \"200 OK\""},{"line_number":14,"context_line":"        headers \u003d [(\"Content-type\", \"text/plain\")]"}],"source_content_type":"text/x-python","patch_set":2,"id":"024ceb3d_f874363b","line":11,"range":{"start_line":11,"start_character":4,"end_line":11,"end_character":15},"in_reply_to":"6b9e32f2_49a08d95","updated":"2024-04-03 23:52:24.000000000","message":"Closing because the above covers it.","commit_id":"a6216acc3ba4114390a20eb0194cc5eec10e0157"}],"tox.ini":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"f27a885baba1352b24f5db0140c2d15d9e7ef84f","unresolved":true,"context_lines":[{"line_number":3,"context_line":"envlist \u003d py3,pep8"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"[testenv]"},{"line_number":6,"context_line":"; basepython \u003d python3.12"},{"line_number":7,"context_line":"setenv \u003d"},{"line_number":8,"context_line":"    VIRTUAL_ENV\u003d{envdir}"},{"line_number":9,"context_line":"    BRANCH_NAME\u003dmaster"}],"source_content_type":"text/x-properties","patch_set":2,"id":"11bf2fd0_15064183","line":6,"range":{"start_line":6,"start_character":0,"end_line":6,"end_character":25},"updated":"2024-04-03 07:51:28.000000000","message":"I don\u0027t think we want to force a specific version.\nI remember a time where we did something similar, and hence forcing us to update this version at the beginnig of each new series.\n\nDevelopers can use:\n\n```\ntox -e py312\n```","commit_id":"a6216acc3ba4114390a20eb0194cc5eec10e0157"},{"author":{"_account_id":36102,"name":"Adam McArthur","display_name":"Adam McArthur","email":"adam@mcaq.me","username":"adamcarthur","status":"PhD Candidate in Computational Imaging. Open Source Software Engineer at G-Research."},"change_message_id":"ee1cbba29c0872bfb0d3a34d0b1fe70c8f46f72a","unresolved":false,"context_lines":[{"line_number":3,"context_line":"envlist \u003d py3,pep8"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"[testenv]"},{"line_number":6,"context_line":"; basepython \u003d python3.12"},{"line_number":7,"context_line":"setenv \u003d"},{"line_number":8,"context_line":"    VIRTUAL_ENV\u003d{envdir}"},{"line_number":9,"context_line":"    BRANCH_NAME\u003dmaster"}],"source_content_type":"text/x-properties","patch_set":2,"id":"a3a9c45b_733053c3","line":6,"range":{"start_line":6,"start_character":0,"end_line":6,"end_character":25},"in_reply_to":"11bf2fd0_15064183","updated":"2024-04-03 23:52:24.000000000","message":"Done","commit_id":"a6216acc3ba4114390a20eb0194cc5eec10e0157"}]}
