)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"d6b42a92b1b1791472b766b7d107022a555184ea","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"c464e2c1_de7ff49e","updated":"2025-03-26 17:14:31.000000000","message":"I\u0027m not sure it\u0027s something we should introduce, there are libraries which are doing the same kind of job and well maintained and used by openstack. futuristic, asyncio...","commit_id":"da69869c71441ffe1c857e8c8311fe8fddfed248"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e062b2129f2cd10754f908a44eb927c53758d193","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"01b1d040_10a6f7e8","in_reply_to":"c464e2c1_de7ff49e","updated":"2025-03-27 06:57:08.000000000","message":"Please, tell me which one is providing the same functionality.","commit_id":"da69869c71441ffe1c857e8c8311fe8fddfed248"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"7d8e8ad5c9ffcc5779def3be5401a334cdee0986","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"84dc635b_26a9d47e","updated":"2025-04-16 08:52:31.000000000","message":"Looks ok","commit_id":"8d8ce2741401f8a91942bf81e7811b298e759cf2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"0c1491dc816499772630a2baf7d81c617d1f9e34","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"9c2de5f1_ba093708","updated":"2025-04-21 09:18:38.000000000","message":"recheck neutron-fullstack, ``test_ha_router_failover_disconnect`` test not affected in this patch","commit_id":"8d8ce2741401f8a91942bf81e7811b298e759cf2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"db7aa84eb4bd81b170bbc62316a9e4860f94f4ff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"33346d8d_626bbad0","updated":"2025-04-16 05:44:33.000000000","message":"recheck test_reschedule_network_on_new_agent  fullstack","commit_id":"8d8ce2741401f8a91942bf81e7811b298e759cf2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"dcff11e7e8537796c250e7f9095afe1cd1507f76","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"adc78050_7fce0eb2","updated":"2025-04-22 06:37:33.000000000","message":"recheck unrelated neutron.tests.fullstack.test_l3_agent.TestHAL3Agent error","commit_id":"8d8ce2741401f8a91942bf81e7811b298e759cf2"}],"neutron/common/utils.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"fd6c3d99421b5b0b1755e6c5bd884aaed8b115a1","unresolved":true,"context_lines":[{"line_number":1179,"context_line":"    def stop(self):"},{"line_number":1180,"context_line":"        self._running \u003d False"},{"line_number":1181,"context_line":""},{"line_number":1182,"context_line":"    def run(self):"},{"line_number":1183,"context_line":"        thread \u003d threading.Thread(target\u003dself._run)"},{"line_number":1184,"context_line":"        thread.daemon \u003d True"},{"line_number":1185,"context_line":"        thread.start()"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a5029b7_48555bbd","line":1182,"range":{"start_line":1182,"start_character":8,"end_line":1182,"end_character":11},"updated":"2025-03-27 07:34:36.000000000","message":"I think this method should be called in __init__","commit_id":"da69869c71441ffe1c857e8c8311fe8fddfed248"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"07c741eaf2efe745a6e1e184cc417ac3c3078f13","unresolved":false,"context_lines":[{"line_number":1179,"context_line":"    def stop(self):"},{"line_number":1180,"context_line":"        self._running \u003d False"},{"line_number":1181,"context_line":""},{"line_number":1182,"context_line":"    def run(self):"},{"line_number":1183,"context_line":"        thread \u003d threading.Thread(target\u003dself._run)"},{"line_number":1184,"context_line":"        thread.daemon \u003d True"},{"line_number":1185,"context_line":"        thread.start()"}],"source_content_type":"text/x-python","patch_set":4,"id":"59a22714_56cbf668","line":1182,"range":{"start_line":1182,"start_character":8,"end_line":1182,"end_character":11},"in_reply_to":"9a5029b7_48555bbd","updated":"2025-04-14 08:23:03.000000000","message":"Done","commit_id":"da69869c71441ffe1c857e8c8311fe8fddfed248"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"5a30b193afd6f3a6cf79715cf31c5dc844b9eedc","unresolved":true,"context_lines":[{"line_number":1123,"context_line":""},{"line_number":1124,"context_line":"    https://removal.eventlet.org/guide/migrating-to-threading/"},{"line_number":1125,"context_line":"    \"\"\""},{"line_number":1126,"context_line":"    def __init__(self, number_workers):"},{"line_number":1127,"context_line":"        self._number_workers \u003d number_workers"},{"line_number":1128,"context_line":"        if self._number_workers \u003c 1:"},{"line_number":1129,"context_line":"            msg \u003d _(\u0027The number of workers must be greater than zero\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"d1b77c20_6ee278ad","line":1126,"range":{"start_line":1126,"start_character":23,"end_line":1126,"end_character":37},"updated":"2025-04-07 11:08:16.000000000","message":"nit: worker_number?","commit_id":"ed2b6d6d136d1a89bffdfda6d7dfb6c7175feb5e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"07c741eaf2efe745a6e1e184cc417ac3c3078f13","unresolved":false,"context_lines":[{"line_number":1123,"context_line":""},{"line_number":1124,"context_line":"    https://removal.eventlet.org/guide/migrating-to-threading/"},{"line_number":1125,"context_line":"    \"\"\""},{"line_number":1126,"context_line":"    def __init__(self, number_workers):"},{"line_number":1127,"context_line":"        self._number_workers \u003d number_workers"},{"line_number":1128,"context_line":"        if self._number_workers \u003c 1:"},{"line_number":1129,"context_line":"            msg \u003d _(\u0027The number of workers must be greater than zero\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"def749f5_126903aa","line":1126,"range":{"start_line":1126,"start_character":23,"end_line":1126,"end_character":37},"in_reply_to":"77021815_55b8c4b5","updated":"2025-04-14 08:23:03.000000000","message":"Done","commit_id":"ed2b6d6d136d1a89bffdfda6d7dfb6c7175feb5e"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"49fa9d252e7e4624a3c036ca7839bb3522d69844","unresolved":true,"context_lines":[{"line_number":1123,"context_line":""},{"line_number":1124,"context_line":"    https://removal.eventlet.org/guide/migrating-to-threading/"},{"line_number":1125,"context_line":"    \"\"\""},{"line_number":1126,"context_line":"    def __init__(self, number_workers):"},{"line_number":1127,"context_line":"        self._number_workers \u003d number_workers"},{"line_number":1128,"context_line":"        if self._number_workers \u003c 1:"},{"line_number":1129,"context_line":"            msg \u003d _(\u0027The number of workers must be greater than zero\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"77021815_55b8c4b5","line":1126,"range":{"start_line":1126,"start_character":23,"end_line":1126,"end_character":37},"in_reply_to":"d1b77c20_6ee278ad","updated":"2025-04-10 14:41:08.000000000","message":"or number_of_workers","commit_id":"ed2b6d6d136d1a89bffdfda6d7dfb6c7175feb5e"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"7ddfa40058ecbd309075cd1bcfbf0d27b8b78833","unresolved":true,"context_lines":[{"line_number":1125,"context_line":"    \"\"\""},{"line_number":1126,"context_line":"    def __init__(self, number_workers):"},{"line_number":1127,"context_line":"        self._number_workers \u003d number_workers"},{"line_number":1128,"context_line":"        if self._number_workers \u003c 1:"},{"line_number":1129,"context_line":"            msg \u003d _(\u0027The number of workers must be greater than zero\u0027)"},{"line_number":1130,"context_line":"            raise RuntimeError(msg)"},{"line_number":1131,"context_line":"        self._tasks \u003d queue.Queue()"},{"line_number":1132,"context_line":"        self._threads \u003d {}"},{"line_number":1133,"context_line":"        self._running \u003d False"}],"source_content_type":"text/x-python","patch_set":5,"id":"e749cc00_20a2d66b","line":1130,"range":{"start_line":1128,"start_character":8,"end_line":1130,"end_character":35},"updated":"2025-04-10 14:47:39.000000000","message":"Why not just coerce? \nif self._number_of_workers \u003c 1:\n   LOG.warning(\u0027The number of workers .... bla bla bla.... coercing to 1\u0027)\n   self._number_of_workers \u003d 1\n   \nIn same thinking, should we check the upper bound? `_number_of_workers \u003e 32`","commit_id":"ed2b6d6d136d1a89bffdfda6d7dfb6c7175feb5e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"07c741eaf2efe745a6e1e184cc417ac3c3078f13","unresolved":false,"context_lines":[{"line_number":1125,"context_line":"    \"\"\""},{"line_number":1126,"context_line":"    def __init__(self, number_workers):"},{"line_number":1127,"context_line":"        self._number_workers \u003d number_workers"},{"line_number":1128,"context_line":"        if self._number_workers \u003c 1:"},{"line_number":1129,"context_line":"            msg \u003d _(\u0027The number of workers must be greater than zero\u0027)"},{"line_number":1130,"context_line":"            raise RuntimeError(msg)"},{"line_number":1131,"context_line":"        self._tasks \u003d queue.Queue()"},{"line_number":1132,"context_line":"        self._threads \u003d {}"},{"line_number":1133,"context_line":"        self._running \u003d False"}],"source_content_type":"text/x-python","patch_set":5,"id":"3cd89c19_43a66acb","line":1130,"range":{"start_line":1128,"start_character":8,"end_line":1130,"end_character":35},"in_reply_to":"e749cc00_20a2d66b","updated":"2025-04-14 08:23:03.000000000","message":"I\u0027ve refactored the whole class","commit_id":"ed2b6d6d136d1a89bffdfda6d7dfb6c7175feb5e"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"e8e027c257864cd01efadbab0f2a86b851c29867","unresolved":true,"context_lines":[{"line_number":1159,"context_line":"        self._execute_event.set()"},{"line_number":1160,"context_line":"        self._recalculate_event.set()"},{"line_number":1161,"context_line":""},{"line_number":1162,"context_line":"    def resize(self, number_workers):"},{"line_number":1163,"context_line":"        self._number_workers \u003d number_workers"},{"line_number":1164,"context_line":"        self._execute_event.set()"},{"line_number":1165,"context_line":"        self._recalculate_event.set()"},{"line_number":1166,"context_line":""},{"line_number":1167,"context_line":"    def spawn(self, task, *args, **kwargs):"},{"line_number":1168,"context_line":"        self._tasks.put((task, args, kwargs))"}],"source_content_type":"text/x-python","patch_set":5,"id":"6fe2f3ac_940593e5","line":1165,"range":{"start_line":1162,"start_character":4,"end_line":1165,"end_character":37},"updated":"2025-03-31 18:02:29.000000000","message":"do we really need support for resize this looks like not needed functionality, we can make this pool size fixed and configurable.","commit_id":"ed2b6d6d136d1a89bffdfda6d7dfb6c7175feb5e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"5a30b193afd6f3a6cf79715cf31c5dc844b9eedc","unresolved":true,"context_lines":[{"line_number":1159,"context_line":"        self._execute_event.set()"},{"line_number":1160,"context_line":"        self._recalculate_event.set()"},{"line_number":1161,"context_line":""},{"line_number":1162,"context_line":"    def resize(self, number_workers):"},{"line_number":1163,"context_line":"        self._number_workers \u003d number_workers"},{"line_number":1164,"context_line":"        self._execute_event.set()"},{"line_number":1165,"context_line":"        self._recalculate_event.set()"},{"line_number":1166,"context_line":""},{"line_number":1167,"context_line":"    def spawn(self, task, *args, **kwargs):"},{"line_number":1168,"context_line":"        self._tasks.put((task, args, kwargs))"}],"source_content_type":"text/x-python","patch_set":5,"id":"db716fcb_98d23b1c","line":1165,"range":{"start_line":1162,"start_character":4,"end_line":1165,"end_character":37},"in_reply_to":"2539bfdf_8cffd463","updated":"2025-04-07 11:08:16.000000000","message":"both increase and decrease is a usecase?","commit_id":"ed2b6d6d136d1a89bffdfda6d7dfb6c7175feb5e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b8dd75afe1065807a3dd207fdcbb127809cddb93","unresolved":true,"context_lines":[{"line_number":1159,"context_line":"        self._execute_event.set()"},{"line_number":1160,"context_line":"        self._recalculate_event.set()"},{"line_number":1161,"context_line":""},{"line_number":1162,"context_line":"    def resize(self, number_workers):"},{"line_number":1163,"context_line":"        self._number_workers \u003d number_workers"},{"line_number":1164,"context_line":"        self._execute_event.set()"},{"line_number":1165,"context_line":"        self._recalculate_event.set()"},{"line_number":1166,"context_line":""},{"line_number":1167,"context_line":"    def spawn(self, task, *args, **kwargs):"},{"line_number":1168,"context_line":"        self._tasks.put((task, args, kwargs))"}],"source_content_type":"text/x-python","patch_set":5,"id":"c03a3165_77b24fd6","line":1165,"range":{"start_line":1162,"start_character":4,"end_line":1165,"end_character":37},"in_reply_to":"6fe2f3ac_940593e5","updated":"2025-04-01 21:54:38.000000000","message":"This is a replacement for ``eventlet.GreenPool`` that provides this functionality and is used in the L3 agent. So yes, we need this if we want to replace transparently the current implementation without touching any current functionality.","commit_id":"ed2b6d6d136d1a89bffdfda6d7dfb6c7175feb5e"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"d94d4fd882aa1288cafab59baf3eeff9d7be052a","unresolved":true,"context_lines":[{"line_number":1159,"context_line":"        self._execute_event.set()"},{"line_number":1160,"context_line":"        self._recalculate_event.set()"},{"line_number":1161,"context_line":""},{"line_number":1162,"context_line":"    def resize(self, number_workers):"},{"line_number":1163,"context_line":"        self._number_workers \u003d number_workers"},{"line_number":1164,"context_line":"        self._execute_event.set()"},{"line_number":1165,"context_line":"        self._recalculate_event.set()"},{"line_number":1166,"context_line":""},{"line_number":1167,"context_line":"    def spawn(self, task, *args, **kwargs):"},{"line_number":1168,"context_line":"        self._tasks.put((task, args, kwargs))"}],"source_content_type":"text/x-python","patch_set":5,"id":"2539bfdf_8cffd463","line":1165,"range":{"start_line":1162,"start_character":4,"end_line":1165,"end_character":37},"in_reply_to":"c03a3165_77b24fd6","updated":"2025-04-02 05:53:43.000000000","message":"you are right, its used there but the pool size boundaries are hardcoded, and is set to either number of routers (or ROUTER_PROCESS_GREENLET_MIN which is 8) on the node or ROUTER_PROCESS_GREENLET_MAX which is 32. Realistically 8 is needed on test environments like devstack (to save resource consumption) but for production this number will be always 32. I thought that we can simply drop this dynamic resize complication and instead introduce a config option that will allow operator to set it based on environment scale and hardware specifications.","commit_id":"ed2b6d6d136d1a89bffdfda6d7dfb6c7175feb5e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"07c741eaf2efe745a6e1e184cc417ac3c3078f13","unresolved":false,"context_lines":[{"line_number":1159,"context_line":"        self._execute_event.set()"},{"line_number":1160,"context_line":"        self._recalculate_event.set()"},{"line_number":1161,"context_line":""},{"line_number":1162,"context_line":"    def resize(self, number_workers):"},{"line_number":1163,"context_line":"        self._number_workers \u003d number_workers"},{"line_number":1164,"context_line":"        self._execute_event.set()"},{"line_number":1165,"context_line":"        self._recalculate_event.set()"},{"line_number":1166,"context_line":""},{"line_number":1167,"context_line":"    def spawn(self, task, *args, **kwargs):"},{"line_number":1168,"context_line":"        self._tasks.put((task, args, kwargs))"}],"source_content_type":"text/x-python","patch_set":5,"id":"c6870f1e_c4d09565","line":1165,"range":{"start_line":1162,"start_character":4,"end_line":1165,"end_character":37},"in_reply_to":"db716fcb_98d23b1c","updated":"2025-04-14 08:23:03.000000000","message":"As agreed in the PTG, the resizable mechanism will be removed.","commit_id":"ed2b6d6d136d1a89bffdfda6d7dfb6c7175feb5e"}]}
