)]}'
{".zuul.yaml":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"808571cc0dd5d4d0d97a82b95573e1d4ddeb2982","unresolved":true,"context_lines":[{"line_number":15,"context_line":"        - oslo-service-tox-py3-spawn-safety"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"- job:"},{"line_number":18,"context_line":"    name: oslo-service-tox-py3-spawn-safety"},{"line_number":19,"context_line":"    parent: openstack-tox-py311"},{"line_number":20,"context_line":"    description: |"},{"line_number":21,"context_line":"      Regression tests for fork-safety using spawn-based multiprocessing."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"50dd56c1_fdbbec84","line":18,"range":{"start_line":18,"start_character":10,"end_line":18,"end_character":43},"updated":"2026-06-04 17:29:44.000000000","message":"Let\u0027s make it a generic jobs to disable eventlet and run in threading mode.\n\nopenstack-tox-py313-threading","commit_id":"01074db11e5acc449bc02734093e448ec4a3629b"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"0c36468e2c41bc873d6deaa03fad773aad0c0972","unresolved":false,"context_lines":[{"line_number":15,"context_line":"        - oslo-service-tox-py3-spawn-safety"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"- job:"},{"line_number":18,"context_line":"    name: oslo-service-tox-py3-spawn-safety"},{"line_number":19,"context_line":"    parent: openstack-tox-py311"},{"line_number":20,"context_line":"    description: |"},{"line_number":21,"context_line":"      Regression tests for fork-safety using spawn-based multiprocessing."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"5a4750db_2f7ad2a0","line":18,"range":{"start_line":18,"start_character":10,"end_line":18,"end_character":43},"in_reply_to":"50dd56c1_fdbbec84","updated":"2026-06-04 19:42:58.000000000","message":"Done","commit_id":"01074db11e5acc449bc02734093e448ec4a3629b"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"808571cc0dd5d4d0d97a82b95573e1d4ddeb2982","unresolved":true,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"- job:"},{"line_number":18,"context_line":"    name: oslo-service-tox-py3-spawn-safety"},{"line_number":19,"context_line":"    parent: openstack-tox-py311"},{"line_number":20,"context_line":"    description: |"},{"line_number":21,"context_line":"      Regression tests for fork-safety using spawn-based multiprocessing."},{"line_number":22,"context_line":"      Validates that oslo.service properly avoids fork deadlocks when active"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"1aaf2b15_c241707e","line":19,"range":{"start_line":19,"start_character":12,"end_line":19,"end_character":31},"updated":"2026-06-04 17:29:44.000000000","message":"let\u0027s run it on latest supported python \n\nparent: openstack-tox-py313","commit_id":"01074db11e5acc449bc02734093e448ec4a3629b"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"0c36468e2c41bc873d6deaa03fad773aad0c0972","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"- job:"},{"line_number":18,"context_line":"    name: oslo-service-tox-py3-spawn-safety"},{"line_number":19,"context_line":"    parent: openstack-tox-py311"},{"line_number":20,"context_line":"    description: |"},{"line_number":21,"context_line":"      Regression tests for fork-safety using spawn-based multiprocessing."},{"line_number":22,"context_line":"      Validates that oslo.service properly avoids fork deadlocks when active"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"5ae3de93_73af7220","line":19,"range":{"start_line":19,"start_character":12,"end_line":19,"end_character":31},"in_reply_to":"1aaf2b15_c241707e","updated":"2026-06-04 19:42:58.000000000","message":"Done","commit_id":"01074db11e5acc449bc02734093e448ec4a3629b"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"1de4d8812079017d1bd2e25e5e0d6745e3abbb51","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"93e8d75d_9cde021e","updated":"2026-06-05 08:48:47.000000000","message":"recheck","commit_id":"2aae4dc6c3c71e64a2b4ec84ee66c7154d3d090e"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"63fad1d2b7faf6595385a8d819b628733abd3e12","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"9b67b128_4545d9fe","updated":"2026-06-05 15:36:22.000000000","message":"recheck","commit_id":"d5e79b5c5d09618a467e666765aaefc9f8e8e9e8"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"b723757fa447bc9334bddbd2ceaa9b3ad87f294b","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":14,"id":"bd03ebb8_02a16cb0","updated":"2026-06-11 15:13:37.000000000","message":"Although the test is passing, it\u0027s not clear to me at which point the test is supposed to fail when fork-safety is broken. Could you explain that ?","commit_id":"f3c42d26ba813c1ade592d1b780f953e18868668"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"358b4c352ba1145b07fc012592292772b95b8448","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"50059aba_7e11521d","updated":"2026-06-18 11:47:01.000000000","message":"recheck","commit_id":"547b42fa9120dbb5ba05849061fcb8ae827ba797"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"5503d219e9355fb8f6b613fa120c358978494695","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"61198a8a_71bdcf8e","updated":"2026-06-16 14:28:35.000000000","message":"recheck","commit_id":"547b42fa9120dbb5ba05849061fcb8ae827ba797"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a7cef02fdba0bea525f97128a0b8961765652e0e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"ab4c64f7_56344826","updated":"2026-06-24 19:22:58.000000000","message":"fine with this version too. did not +w, waiting for Takashi if he has any further comments","commit_id":"1d25fb9f34b09f2d198d840029f8b0b8894679f3"}],"oslo_service/_fork_safety_workers.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"808571cc0dd5d4d0d97a82b95573e1d4ddeb2982","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2025 Red Hat, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":10,"id":"03707ca9_b0389aed","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":21},"updated":"2026-06-04 17:29:44.000000000","message":"2026","commit_id":"01074db11e5acc449bc02734093e448ec4a3629b"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"7d5117ee4475e84b94682252c59d946b4944503a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2025 Red Hat, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f409b22_3f964e78","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":21},"in_reply_to":"03707ca9_b0389aed","updated":"2026-06-15 20:56:49.000000000","message":"Done","commit_id":"01074db11e5acc449bc02734093e448ec4a3629b"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"808571cc0dd5d4d0d97a82b95573e1d4ddeb2982","unresolved":true,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"\"\"\"Worker functions for fork-safety regression tests."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Must live at package root (oslo_service/) so spawned workers can import"},{"line_number":18,"context_line":"without going through oslo_service.tests (which pulls in eventlet and"},{"line_number":19,"context_line":"breaks spawn-based multiprocessing)."},{"line_number":20,"context_line":"\"\"\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"4bded4bd_1c728e5a","line":19,"range":{"start_line":17,"start_character":0,"end_line":19,"end_character":36},"updated":"2026-06-04 17:29:44.000000000","message":"is not OSLO_SERVICE_SKIP_EVENTLET skip the eventlet entirely in tests ? if so then i will suggest to keep it in oslo_service.tests otherwise it is confusing.\n\nhttps://review.opendev.org/c/openstack/oslo.service/+/980790/10/oslo_service/tests/__init__.py","commit_id":"01074db11e5acc449bc02734093e448ec4a3629b"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"7d5117ee4475e84b94682252c59d946b4944503a","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"\"\"\"Worker functions for fork-safety regression tests."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Must live at package root (oslo_service/) so spawned workers can import"},{"line_number":18,"context_line":"without going through oslo_service.tests (which pulls in eventlet and"},{"line_number":19,"context_line":"breaks spawn-based multiprocessing)."},{"line_number":20,"context_line":"\"\"\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1b12c4ce_6c6d533a","line":19,"range":{"start_line":17,"start_character":0,"end_line":19,"end_character":36},"in_reply_to":"4bded4bd_1c728e5a","updated":"2026-06-15 20:56:49.000000000","message":"Done","commit_id":"01074db11e5acc449bc02734093e448ec4a3629b"}],"oslo_service/periodic_task.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"fb7d84ad6de6a49b72967e1c4ac8e64014fb921d","unresolved":true,"context_lines":[{"line_number":335,"context_line":"                exc_info\u003dTrue,"},{"line_number":336,"context_line":"            )"},{"line_number":337,"context_line":"            raise"},{"line_number":338,"context_line":"        for full_task_name, task_name, task, next_run in due_tasks:"},{"line_number":339,"context_line":"            self._periodic_last_run[task_name] \u003d next_run"},{"line_number":340,"context_line":"        pool \u003d _multiprocessing.get_spawn_pool(processes\u003dprocesses)"},{"line_number":341,"context_line":"        try:"},{"line_number":342,"context_line":"            async_results \u003d []"}],"source_content_type":"text/x-python","patch_set":7,"id":"94ae0004_c07b5c03","side":"PARENT","line":339,"range":{"start_line":338,"start_character":0,"end_line":339,"end_character":57},"updated":"2026-05-26 17:29:56.000000000","message":"why you are removing this?","commit_id":"aa0ae3be827bf3400d609d95706e7b4261f7d7ef"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"808571cc0dd5d4d0d97a82b95573e1d4ddeb2982","unresolved":false,"context_lines":[{"line_number":335,"context_line":"                exc_info\u003dTrue,"},{"line_number":336,"context_line":"            )"},{"line_number":337,"context_line":"            raise"},{"line_number":338,"context_line":"        for full_task_name, task_name, task, next_run in due_tasks:"},{"line_number":339,"context_line":"            self._periodic_last_run[task_name] \u003d next_run"},{"line_number":340,"context_line":"        pool \u003d _multiprocessing.get_spawn_pool(processes\u003dprocesses)"},{"line_number":341,"context_line":"        try:"},{"line_number":342,"context_line":"            async_results \u003d []"}],"source_content_type":"text/x-python","patch_set":7,"id":"790be759_a5f976fb","side":"PARENT","line":339,"range":{"start_line":338,"start_character":0,"end_line":339,"end_character":57},"in_reply_to":"94ae0004_c07b5c03","updated":"2026-06-04 17:29:44.000000000","message":"Done","commit_id":"aa0ae3be827bf3400d609d95706e7b4261f7d7ef"}],"oslo_service/tests/_fork_safety_workers.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"b723757fa447bc9334bddbd2ceaa9b3ad87f294b","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2026 Red Hat, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":14,"id":"ef6ae94c_5569eaea","line":1,"range":{"start_line":1,"start_character":2,"end_line":1,"end_character":11},"updated":"2026-06-11 15:13:37.000000000","message":"This file looks quite redundant. Can\u0027t we add this to the test code ?","commit_id":"f3c42d26ba813c1ade592d1b780f953e18868668"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"7d5117ee4475e84b94682252c59d946b4944503a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2026 Red Hat, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":14,"id":"92f2d6d0_22ade0a0","line":1,"range":{"start_line":1,"start_character":2,"end_line":1,"end_character":11},"in_reply_to":"ef6ae94c_5569eaea","updated":"2026-06-15 20:56:49.000000000","message":"Done","commit_id":"f3c42d26ba813c1ade592d1b780f953e18868668"}],"oslo_service/tests/backend/threading/test_fork_safety_regression.py":[{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"180983bdc5f1a1638ce6e510a88863e9134aea1a","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"8c71c35e_b79691dd","line":219,"updated":"2026-03-18 19:22:17.000000000","message":"The main regression scenario looks great, especially the active-thread case.\n\nI wonder if we might be testing a bit more than necessary here. Some of the\nsmaller tests seem to focus on implementation details (e.g. private attributes\nlike pool._ctx), while the core value of this patch appears to be the\nfork-safety regression coverage.\n\nWould it make sense to keep a smaller set of tests focused on:\n- spawn context sanity\n- basic pool execution\n- the active-thread regression case\n\nand drop or simplify the rest?","commit_id":"820288385aa193c05388e9705595f257c012330d"},{"author":{"_account_id":38752,"name":"Pavlo Kostianov","email":"pkostian@redhat.com","username":"pkostian"},"change_message_id":"cdb1ed5947a8644cd71b8c7abc38ac6e3c9e5ea5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"67179310_8b649f4a","line":219,"in_reply_to":"8c71c35e_b79691dd","updated":"2026-03-19 14:01:30.000000000","message":"Thanks, done! Only kept 3 core tests and removed redundant or those not directly testing fork-safety regrassion","commit_id":"820288385aa193c05388e9705595f257c012330d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"fb7d84ad6de6a49b72967e1c4ac8e64014fb921d","unresolved":true,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"@unittest.skipIf(EVENTLET_LOADED,"},{"line_number":71,"context_line":"                 \"Spawn-safety tests cannot run with eventlet monkey-patching\")"},{"line_number":72,"context_line":"class TestForkSafetyRegression(unittest.TestCase):"},{"line_number":73,"context_line":"    \"\"\"Spawn-based multiprocessing: context, pool creation, no deadlocks."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    Skipped if eventlet is loaded."},{"line_number":76,"context_line":"    \"\"\""},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"39294d66_f376bd93","line":74,"range":{"start_line":72,"start_character":0,"end_line":74,"end_character":0},"updated":"2026-05-26 17:29:56.000000000","message":"these seems to me the multiprocessing tests and not specific to the oslo.service. If we want then we should add test where service launcher launch service with spawn context and see no lock deadlock happen.","commit_id":"14184e373c06e4237ac382630537399c4f0a5366"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"5f1715e9326f9c4d4cd1b9e13150396b521aaf19","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"@unittest.skipIf(EVENTLET_LOADED,"},{"line_number":71,"context_line":"                 \"Spawn-safety tests cannot run with eventlet monkey-patching\")"},{"line_number":72,"context_line":"class TestForkSafetyRegression(unittest.TestCase):"},{"line_number":73,"context_line":"    \"\"\"Spawn-based multiprocessing: context, pool creation, no deadlocks."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    Skipped if eventlet is loaded."},{"line_number":76,"context_line":"    \"\"\""},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"a463dcf3_e026261f","line":74,"range":{"start_line":72,"start_character":0,"end_line":74,"end_character":0},"in_reply_to":"39294d66_f376bd93","updated":"2026-06-03 13:54:42.000000000","message":"Done","commit_id":"14184e373c06e4237ac382630537399c4f0a5366"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"808571cc0dd5d4d0d97a82b95573e1d4ddeb2982","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2025 Red Hat, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":10,"id":"174e799f_f256aef4","line":1,"range":{"start_line":1,"start_character":15,"end_line":1,"end_character":20},"updated":"2026-06-04 17:29:44.000000000","message":"2026","commit_id":"01074db11e5acc449bc02734093e448ec4a3629b"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"0c36468e2c41bc873d6deaa03fad773aad0c0972","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2025 Red Hat, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":10,"id":"e853b07b_8f4194ee","line":1,"range":{"start_line":1,"start_character":15,"end_line":1,"end_character":20},"in_reply_to":"174e799f_f256aef4","updated":"2026-06-04 19:42:58.000000000","message":"Done","commit_id":"01074db11e5acc449bc02734093e448ec4a3629b"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"abd2effc5f9130469f6700b06c7e3a2ff0ce7bf4","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2026 Red Hat, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":14,"id":"5c7b07fd_e762ea64","line":1,"updated":"2026-06-11 15:14:53.000000000","message":"Maybe we can define this as functional tests, and then completely separate this from the existing unit tests.","commit_id":"f3c42d26ba813c1ade592d1b780f953e18868668"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"7d5117ee4475e84b94682252c59d946b4944503a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2026 Red Hat, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":14,"id":"eb00ef19_95fd7a2a","line":1,"in_reply_to":"5c7b07fd_e762ea64","updated":"2026-06-15 20:56:49.000000000","message":"Done","commit_id":"f3c42d26ba813c1ade592d1b780f953e18868668"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"b723757fa447bc9334bddbd2ceaa9b3ad87f294b","unresolved":true,"context_lines":[{"line_number":204,"context_line":""},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"@unittest.skipIf(EVENTLET_LOADED,"},{"line_number":207,"context_line":"                 \"Spawn-safety tests cannot run with eventlet monkey-patching\")"},{"line_number":208,"context_line":"class TestForkSafetyRegression(unittest.TestCase):"},{"line_number":209,"context_line":"    \"\"\"Spawn-based multiprocessing and ServiceLauncher regression coverage."},{"line_number":210,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"e69452a1_26d03b7f","line":207,"range":{"start_line":207,"start_character":62,"end_line":207,"end_character":77},"updated":"2026-06-11 15:13:37.000000000","message":"Should we check patching status rather than import status then ?","commit_id":"f3c42d26ba813c1ade592d1b780f953e18868668"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"b723757fa447bc9334bddbd2ceaa9b3ad87f294b","unresolved":true,"context_lines":[{"line_number":318,"context_line":"            proc.join(timeout\u003d5)"},{"line_number":319,"context_line":"            if proc.is_alive():"},{"line_number":320,"context_line":"                self.fail("},{"line_number":321,"context_line":"                    \"ServiceLauncher spawn regression process did not \""},{"line_number":322,"context_line":"                    f\"exit cleanly: {messages}\")"},{"line_number":323,"context_line":"        finally:"},{"line_number":324,"context_line":"            if proc.is_alive():"}],"source_content_type":"text/x-python","patch_set":14,"id":"90052de6_4dd8727b","line":321,"range":{"start_line":321,"start_character":43,"end_line":321,"end_character":61},"updated":"2026-06-11 15:13:37.000000000","message":"Regression process does not make clear sense to me.\n\nProbably something like test service would be better.","commit_id":"f3c42d26ba813c1ade592d1b780f953e18868668"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"7d5117ee4475e84b94682252c59d946b4944503a","unresolved":false,"context_lines":[{"line_number":318,"context_line":"            proc.join(timeout\u003d5)"},{"line_number":319,"context_line":"            if proc.is_alive():"},{"line_number":320,"context_line":"                self.fail("},{"line_number":321,"context_line":"                    \"ServiceLauncher spawn regression process did not \""},{"line_number":322,"context_line":"                    f\"exit cleanly: {messages}\")"},{"line_number":323,"context_line":"        finally:"},{"line_number":324,"context_line":"            if proc.is_alive():"}],"source_content_type":"text/x-python","patch_set":14,"id":"6ae55b05_bbbd2e64","line":321,"range":{"start_line":321,"start_character":43,"end_line":321,"end_character":61},"in_reply_to":"5e0bd339_876e194d","updated":"2026-06-15 20:56:49.000000000","message":"Done","commit_id":"f3c42d26ba813c1ade592d1b780f953e18868668"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"2863901f95cd4351a5e97e81cc9d12e19519e7c0","unresolved":true,"context_lines":[{"line_number":318,"context_line":"            proc.join(timeout\u003d5)"},{"line_number":319,"context_line":"            if proc.is_alive():"},{"line_number":320,"context_line":"                self.fail("},{"line_number":321,"context_line":"                    \"ServiceLauncher spawn regression process did not \""},{"line_number":322,"context_line":"                    f\"exit cleanly: {messages}\")"},{"line_number":323,"context_line":"        finally:"},{"line_number":324,"context_line":"            if proc.is_alive():"}],"source_content_type":"text/x-python","patch_set":14,"id":"5e0bd339_876e194d","line":321,"range":{"start_line":321,"start_character":43,"end_line":321,"end_character":61},"in_reply_to":"90052de6_4dd8727b","updated":"2026-06-15 12:59:28.000000000","message":"I agree","commit_id":"f3c42d26ba813c1ade592d1b780f953e18868668"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"b723757fa447bc9334bddbd2ceaa9b3ad87f294b","unresolved":true,"context_lines":[{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        self.assertEqual("},{"line_number":341,"context_line":"            0, proc.exitcode,"},{"line_number":342,"context_line":"            f\"ServiceLauncher regression process failed: {messages}\")"},{"line_number":343,"context_line":"        self.assertNotIn("},{"line_number":344,"context_line":"            _ERROR, [message[0] for message in messages],"},{"line_number":345,"context_line":"            f\"ServiceLauncher regression error: {messages}\")"}],"source_content_type":"text/x-python","patch_set":14,"id":"63b8a287_a7adf0ac","line":342,"range":{"start_line":342,"start_character":29,"end_line":342,"end_character":48},"updated":"2026-06-11 15:13:37.000000000","message":"ditto","commit_id":"f3c42d26ba813c1ade592d1b780f953e18868668"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"7d5117ee4475e84b94682252c59d946b4944503a","unresolved":false,"context_lines":[{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        self.assertEqual("},{"line_number":341,"context_line":"            0, proc.exitcode,"},{"line_number":342,"context_line":"            f\"ServiceLauncher regression process failed: {messages}\")"},{"line_number":343,"context_line":"        self.assertNotIn("},{"line_number":344,"context_line":"            _ERROR, [message[0] for message in messages],"},{"line_number":345,"context_line":"            f\"ServiceLauncher regression error: {messages}\")"}],"source_content_type":"text/x-python","patch_set":14,"id":"f71354b2_9c2a79de","line":342,"range":{"start_line":342,"start_character":29,"end_line":342,"end_character":48},"in_reply_to":"63b8a287_a7adf0ac","updated":"2026-06-15 20:56:49.000000000","message":"Done","commit_id":"f3c42d26ba813c1ade592d1b780f953e18868668"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"b723757fa447bc9334bddbd2ceaa9b3ad87f294b","unresolved":true,"context_lines":[{"line_number":342,"context_line":"            f\"ServiceLauncher regression process failed: {messages}\")"},{"line_number":343,"context_line":"        self.assertNotIn("},{"line_number":344,"context_line":"            _ERROR, [message[0] for message in messages],"},{"line_number":345,"context_line":"            f\"ServiceLauncher regression error: {messages}\")"},{"line_number":346,"context_line":"        self.assertIn(_SERVICE_STARTED, [message[0] for message in messages])"},{"line_number":347,"context_line":"        self.assertIn(_SERVICE_STOPPED, [message[0] for message in messages])"},{"line_number":348,"context_line":"        self.assertIn(_LAUNCHER_DONE, [message[0] for message in messages])"}],"source_content_type":"text/x-python","patch_set":14,"id":"2afbe067_7cdb6ec2","line":345,"range":{"start_line":345,"start_character":30,"end_line":345,"end_character":40},"updated":"2026-06-11 15:13:37.000000000","message":"ditto","commit_id":"f3c42d26ba813c1ade592d1b780f953e18868668"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"7d5117ee4475e84b94682252c59d946b4944503a","unresolved":false,"context_lines":[{"line_number":342,"context_line":"            f\"ServiceLauncher regression process failed: {messages}\")"},{"line_number":343,"context_line":"        self.assertNotIn("},{"line_number":344,"context_line":"            _ERROR, [message[0] for message in messages],"},{"line_number":345,"context_line":"            f\"ServiceLauncher regression error: {messages}\")"},{"line_number":346,"context_line":"        self.assertIn(_SERVICE_STARTED, [message[0] for message in messages])"},{"line_number":347,"context_line":"        self.assertIn(_SERVICE_STOPPED, [message[0] for message in messages])"},{"line_number":348,"context_line":"        self.assertIn(_LAUNCHER_DONE, [message[0] for message in messages])"}],"source_content_type":"text/x-python","patch_set":14,"id":"47b96301_8b62254a","line":345,"range":{"start_line":345,"start_character":30,"end_line":345,"end_character":40},"in_reply_to":"2afbe067_7cdb6ec2","updated":"2026-06-15 20:56:49.000000000","message":"Done","commit_id":"f3c42d26ba813c1ade592d1b780f953e18868668"}],"oslo_service/tests/functional/__init__.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"60116b01688373e4f0b8cd4e0d6fea8d3acbbd23","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2026 Red Hat, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":15,"id":"afc1a580_f660ff64","line":1,"updated":"2026-06-12 14:56:41.000000000","message":"pep8: H104: File contains nothing but comments","commit_id":"c76f58cfa68cfdb77f1b196bee0d50dcd1a01b45"}],"oslo_service/tests/functional/test_fork_safety_regression.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"60116b01688373e4f0b8cd4e0d6fea8d3acbbd23","unresolved":false,"context_lines":[{"line_number":144,"context_line":"    \"\"\"Launch a ServiceLauncher worker while another thread holds a lock."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    The important assertion is that ServiceLauncher selects the spawn context."},{"line_number":147,"context_line":"    If oslo.service regresses to fork, the child process would be created from a"},{"line_number":148,"context_line":"    process with an active background thread. That can inherit locked state"},{"line_number":149,"context_line":"    without the owning thread and is exactly the unsafe pattern this functional"},{"line_number":150,"context_line":"    regression test guards against."}],"source_content_type":"text/x-python","patch_set":15,"id":"ae9029f0_5331f36f","line":147,"updated":"2026-06-12 14:56:41.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"c76f58cfa68cfdb77f1b196bee0d50dcd1a01b45"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"60116b01688373e4f0b8cd4e0d6fea8d3acbbd23","unresolved":false,"context_lines":[{"line_number":320,"context_line":"    def test_service_launcher_spawn_does_not_deadlock_with_active_thread(self):"},{"line_number":321,"context_line":"        \"\"\"ServiceLauncher starts a spawn worker with an active thread."},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"        The regression is not generic multiprocessing behavior; it is accidental"},{"line_number":324,"context_line":"        fallback in oslo.service\u0027s launcher path. The child process fails fast"},{"line_number":325,"context_line":"        if ServiceLauncher selects anything other than spawn, and all waits are"},{"line_number":326,"context_line":"        bounded so fork-related hangs surface as test failures."}],"source_content_type":"text/x-python","patch_set":15,"id":"4647df7b_7c5a8368","line":323,"updated":"2026-06-12 14:56:41.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"c76f58cfa68cfdb77f1b196bee0d50dcd1a01b45"}],"oslo_service/tests/run_fork_safety_tests.py":[{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"180983bdc5f1a1638ce6e510a88863e9134aea1a","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"bac53c4e_7b667c6e","line":132,"updated":"2026-03-18 19:22:17.000000000","message":"This helper makes sense given the need to avoid eventlet interference,\nand the approach is clear.\n\nThat said, I wonder if introducing a custom test runner might add some\nmaintenance overhead compared to using the standard test tooling\n(stestr/unittest) with a dedicated tox environment.\n\nDo you think it would be possible to achieve the same isolation without\nre-implementing part of the test runner logic, or is this level of\ncustomization required here?","commit_id":"820288385aa193c05388e9705595f257c012330d"},{"author":{"_account_id":38752,"name":"Pavlo Kostianov","email":"pkostian@redhat.com","username":"pkostian"},"change_message_id":"889b160984f5a71ea9a6443d329e149035d2dc4c","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"e4de2ef3_9a79cbae","line":132,"in_reply_to":"bac53c4e_7b667c6e","updated":"2026-03-19 11:24:57.000000000","message":"Good question! \n\nThe custom runner exists because oslo_service/tests/\\__init__.py calls eventlet.monkey_patch() on import, which breaks spawn-based multiprocessing.                                                                                                                                   \n\nI see two alternatives:\n\n1. Add env var check in oslo_service/tests/\\__init__.py to skip monkey-patching when it is set, and set it in the py3-spawn-safety tox env. Downside: if anyone runs these tests directly without tox (e.g., stestr run test_fork_safety_regression), they\u0027ll get eventlet interference. But from what I understand, everyone uses tox in OpenStack, and CI will always use tox, so this might be fine.                                                                                                                       \n                  \n2. Move tests to oslo_service/fork_safety_tests/ with its own \\__init__.py that doesn\u0027t monkey-patch. This would work with both tox and stestr, but feels like it would bring confusion to the folder structure.\n\nI would either keep the custom runner or if you confirm tox is the unified way of running tests I can implement env var option. What do you think about it?","commit_id":"820288385aa193c05388e9705595f257c012330d"},{"author":{"_account_id":38752,"name":"Pavlo Kostianov","email":"pkostian@redhat.com","username":"pkostian"},"change_message_id":"231b2a73b560ab6415f97a9175a2bb646cad1232","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"94fdff47_87645b63","line":132,"in_reply_to":"e4de2ef3_9a79cbae","updated":"2026-03-19 14:39:44.000000000","message":"Talked to Daniel, proceeding with env var option.","commit_id":"820288385aa193c05388e9705595f257c012330d"}],"releasenotes/notes/fork-safety-regression-tests-ci-b9c3f7e1d2a8e456.yaml":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"fb7d84ad6de6a49b72967e1c4ac8e64014fb921d","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added regression test suite and CI job for fork-safety of the threading"},{"line_number":5,"context_line":"    backend\u0027s spawn-based multiprocessing."},{"line_number":6,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":7,"id":"04f207b0_a2756a70","line":3,"range":{"start_line":1,"start_character":0,"end_line":3,"end_character":5},"updated":"2026-05-26 17:29:56.000000000","message":"this is not feature and we do not need to add releasenotes for adding tests coverage.","commit_id":"14184e373c06e4237ac382630537399c4f0a5366"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"74d49271a7054368c0bb8ae596870fa6afb87de5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added regression test suite and CI job for fork-safety of the threading"},{"line_number":5,"context_line":"    backend\u0027s spawn-based multiprocessing."},{"line_number":6,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":7,"id":"e707829d_4e28c024","line":3,"range":{"start_line":1,"start_character":0,"end_line":3,"end_character":5},"in_reply_to":"04f207b0_a2756a70","updated":"2026-06-03 17:35:08.000000000","message":"Done","commit_id":"14184e373c06e4237ac382630537399c4f0a5366"}],"tox.ini":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"808571cc0dd5d4d0d97a82b95573e1d4ddeb2982","unresolved":true,"context_lines":[{"line_number":68,"context_line":"  rm -rf releasenotes/build"},{"line_number":69,"context_line":"  sphinx-build -a -E -W -d releasenotes/build/doctrees --keep-going -b html releasenotes/source releasenotes/build/html"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"[testenv:py3-spawn-safety]"},{"line_number":72,"context_line":"description \u003d Regression tests for fork-safety (spawn-based multiprocessing)"},{"line_number":73,"context_line":"setenv \u003d"},{"line_number":74,"context_line":"  OSLO_SERVICE_SKIP_EVENTLET\u003d1"}],"source_content_type":"text/x-properties","patch_set":10,"id":"a24a9915_7404d7c8","line":71,"range":{"start_line":71,"start_character":9,"end_line":71,"end_character":26},"updated":"2026-06-04 17:29:44.000000000","message":"instead of making specific to one test, let\u0027s make it for threading mode where we can run tests including spawn-safe one along with other tests running in threading mode.\n\npy313-threading","commit_id":"01074db11e5acc449bc02734093e448ec4a3629b"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"0c36468e2c41bc873d6deaa03fad773aad0c0972","unresolved":false,"context_lines":[{"line_number":68,"context_line":"  rm -rf releasenotes/build"},{"line_number":69,"context_line":"  sphinx-build -a -E -W -d releasenotes/build/doctrees --keep-going -b html releasenotes/source releasenotes/build/html"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"[testenv:py3-spawn-safety]"},{"line_number":72,"context_line":"description \u003d Regression tests for fork-safety (spawn-based multiprocessing)"},{"line_number":73,"context_line":"setenv \u003d"},{"line_number":74,"context_line":"  OSLO_SERVICE_SKIP_EVENTLET\u003d1"}],"source_content_type":"text/x-properties","patch_set":10,"id":"98696ddd_b5f5bd15","line":71,"range":{"start_line":71,"start_character":9,"end_line":71,"end_character":26},"in_reply_to":"a24a9915_7404d7c8","updated":"2026-06-04 19:42:58.000000000","message":"Done","commit_id":"01074db11e5acc449bc02734093e448ec4a3629b"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"808571cc0dd5d4d0d97a82b95573e1d4ddeb2982","unresolved":true,"context_lines":[{"line_number":69,"context_line":"  sphinx-build -a -E -W -d releasenotes/build/doctrees --keep-going -b html releasenotes/source releasenotes/build/html"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"[testenv:py3-spawn-safety]"},{"line_number":72,"context_line":"description \u003d Regression tests for fork-safety (spawn-based multiprocessing)"},{"line_number":73,"context_line":"setenv \u003d"},{"line_number":74,"context_line":"  OSLO_SERVICE_SKIP_EVENTLET\u003d1"},{"line_number":75,"context_line":"deps \u003d"}],"source_content_type":"text/x-properties","patch_set":10,"id":"fc1535db_219bf7ee","line":72,"range":{"start_line":72,"start_character":14,"end_line":72,"end_character":76},"updated":"2026-06-04 17:29:44.000000000","message":"Running tests in threading mode","commit_id":"01074db11e5acc449bc02734093e448ec4a3629b"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"0c36468e2c41bc873d6deaa03fad773aad0c0972","unresolved":false,"context_lines":[{"line_number":69,"context_line":"  sphinx-build -a -E -W -d releasenotes/build/doctrees --keep-going -b html releasenotes/source releasenotes/build/html"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"[testenv:py3-spawn-safety]"},{"line_number":72,"context_line":"description \u003d Regression tests for fork-safety (spawn-based multiprocessing)"},{"line_number":73,"context_line":"setenv \u003d"},{"line_number":74,"context_line":"  OSLO_SERVICE_SKIP_EVENTLET\u003d1"},{"line_number":75,"context_line":"deps \u003d"}],"source_content_type":"text/x-properties","patch_set":10,"id":"dcc51648_f257fece","line":72,"range":{"start_line":72,"start_character":14,"end_line":72,"end_character":76},"in_reply_to":"fc1535db_219bf7ee","updated":"2026-06-04 19:42:58.000000000","message":"Done","commit_id":"01074db11e5acc449bc02734093e448ec4a3629b"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"808571cc0dd5d4d0d97a82b95573e1d4ddeb2982","unresolved":true,"context_lines":[{"line_number":75,"context_line":"deps \u003d"},{"line_number":76,"context_line":"  {[testenv]deps}"},{"line_number":77,"context_line":"commands \u003d"},{"line_number":78,"context_line":"  stestr run oslo_service.tests.backend.threading.test_fork_safety_regression {posargs}"},{"line_number":79,"context_line":"# This test verifies that oslo.service\u0027s threading backend properly uses"},{"line_number":80,"context_line":"# spawn-based multiprocessing to avoid fork deadlocks."},{"line_number":81,"context_line":"# OSLO_SERVICE_SKIP_EVENTLET\u003d1 disables eventlet monkey-patching which"}],"source_content_type":"text/x-properties","patch_set":10,"id":"3b026682_29d3fd72","line":78,"range":{"start_line":78,"start_character":0,"end_line":78,"end_character":87},"updated":"2026-06-04 17:29:44.000000000","message":"I will suggest to run all unit tests in threading mode","commit_id":"01074db11e5acc449bc02734093e448ec4a3629b"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"0c36468e2c41bc873d6deaa03fad773aad0c0972","unresolved":false,"context_lines":[{"line_number":75,"context_line":"deps \u003d"},{"line_number":76,"context_line":"  {[testenv]deps}"},{"line_number":77,"context_line":"commands \u003d"},{"line_number":78,"context_line":"  stestr run oslo_service.tests.backend.threading.test_fork_safety_regression {posargs}"},{"line_number":79,"context_line":"# This test verifies that oslo.service\u0027s threading backend properly uses"},{"line_number":80,"context_line":"# spawn-based multiprocessing to avoid fork deadlocks."},{"line_number":81,"context_line":"# OSLO_SERVICE_SKIP_EVENTLET\u003d1 disables eventlet monkey-patching which"}],"source_content_type":"text/x-properties","patch_set":10,"id":"ee88e178_5628265d","line":78,"range":{"start_line":78,"start_character":0,"end_line":78,"end_character":87},"in_reply_to":"3b026682_29d3fd72","updated":"2026-06-04 19:42:58.000000000","message":"Done","commit_id":"01074db11e5acc449bc02734093e448ec4a3629b"}]}
