)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"change_message_id":"e9eda8d3938474cbfb741c885f1073e44ff62f19","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"c00702a8_d4e30092","updated":"2026-03-27 10:34:35.000000000","message":"Your patch fixed the issue for me. Thanks for it.","commit_id":"0587609a07424069ad509f4363cb7dacc5953271"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"13f61e091ea2ead1e56d9f23eee3057e85afae15","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"284d65b3_5ac67c23","in_reply_to":"c00702a8_d4e30092","updated":"2026-03-27 13:07:58.000000000","message":"thanks for checking, I will update than with tests etc to make it final","commit_id":"0587609a07424069ad509f4363cb7dacc5953271"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"509b12f3d557b50510c62d246b122cf1cb1a2689","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e6b492dc_f80adf3a","updated":"2026-03-31 13:37:44.000000000","message":"And as mentioned in neutron meeting should add a release note since we want the distros to pick this up and it gives a good reason to","commit_id":"8570ac3a00603678e4dd3dcae89cf8cd8258c0b8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"372fa9820eb598a71c506f8a11eab940272d15c2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"cbd842e2_34fd8910","updated":"2026-04-07 20:48:39.000000000","message":"I just changed the bug line of the relnote","commit_id":"4edf4c6efb25a3ea491a3e0987dc809023823380"}],"os_ken/services/protocols/bgp/base.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"218604d988b8d5a5d07c6f157a254a9377fae4db","unresolved":true,"context_lines":[{"line_number":456,"context_line":"        self.index \u003d Sink.next_index()"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"        # Create an event for signal enqueuing."},{"line_number":459,"context_line":"        from os_ken.services.protocols.bgp import utils"},{"line_number":460,"context_line":"        self.outgoing_msg_event \u003d utils.IOFactory.create_custom_event()"},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"        self.messages_queued \u003d 0"}],"source_content_type":"text/x-python","patch_set":3,"id":"21927ad7_caabf9c9","line":459,"updated":"2026-03-31 13:25:41.000000000","message":"why do you need to import it here second time? It is already imported in L46","commit_id":"8570ac3a00603678e4dd3dcae89cf8cd8258c0b8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"372fa9820eb598a71c506f8a11eab940272d15c2","unresolved":false,"context_lines":[{"line_number":456,"context_line":"        self.index \u003d Sink.next_index()"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"        # Create an event for signal enqueuing."},{"line_number":459,"context_line":"        from os_ken.services.protocols.bgp import utils"},{"line_number":460,"context_line":"        self.outgoing_msg_event \u003d utils.IOFactory.create_custom_event()"},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"        self.messages_queued \u003d 0"}],"source_content_type":"text/x-python","patch_set":3,"id":"b17dd186_4fc3bb99","line":459,"in_reply_to":"0f67741e_276755c2","updated":"2026-04-07 20:48:39.000000000","message":"Done","commit_id":"8570ac3a00603678e4dd3dcae89cf8cd8258c0b8"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"923344342498571bcbec50261b5ef318b8a7fe77","unresolved":true,"context_lines":[{"line_number":456,"context_line":"        self.index \u003d Sink.next_index()"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"        # Create an event for signal enqueuing."},{"line_number":459,"context_line":"        from os_ken.services.protocols.bgp import utils"},{"line_number":460,"context_line":"        self.outgoing_msg_event \u003d utils.IOFactory.create_custom_event()"},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"        self.messages_queued \u003d 0"}],"source_content_type":"text/x-python","patch_set":3,"id":"0f67741e_276755c2","line":459,"in_reply_to":"21927ad7_caabf9c9","updated":"2026-04-01 11:05:55.000000000","message":"true, it is useless, anyway we are out of eventlet tricks with monkeypatching with treading so, no need for such ugly imports in the middle of the files.","commit_id":"8570ac3a00603678e4dd3dcae89cf8cd8258c0b8"}],"os_ken/services/protocols/bgp/utils/thrding.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"218604d988b8d5a5d07c6f157a254a9377fae4db","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright 2026 Openinfra Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":3,"id":"18fcc9ab_1416fa64","line":1,"updated":"2026-03-31 13:25:41.000000000","message":"is name of that file intentionally \"thrding\" or is it a typo and should be \"threading\" maybe?","commit_id":"8570ac3a00603678e4dd3dcae89cf8cd8258c0b8"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"923344342498571bcbec50261b5ef318b8a7fe77","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright 2026 Openinfra Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":3,"id":"1f8f381d_cb73f2a5","line":1,"in_reply_to":"18fcc9ab_1416fa64","updated":"2026-04-01 11:05:55.000000000","message":"I mirrored the naming from the module for eventlet loopingcall: evtlet.py (https://opendev.org/openstack/os-ken/src/branch/master/os_ken/services/protocols/bgp/utils/evtlet.py). I suppose it can be anything bu threading should be an issue as shadows the builtin threading module.","commit_id":"8570ac3a00603678e4dd3dcae89cf8cd8258c0b8"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f115b985fcd97799f661aab7ba72dc8e39e0ef57","unresolved":true,"context_lines":[{"line_number":48,"context_line":"    def _loop(self):"},{"line_number":49,"context_line":"        while self._running:"},{"line_number":50,"context_line":"            # Wait for interval, but can be interrupted by cancel_event"},{"line_number":51,"context_line":"            if self._cancel_event.wait(self._interval):"},{"line_number":52,"context_line":"                # Event was set \u003d\u003e reset or stop requested"},{"line_number":53,"context_line":"                self._cancel_event.clear()"},{"line_number":54,"context_line":"                if not self._running:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f8395e3_483a0804","line":51,"range":{"start_line":51,"start_character":12,"end_line":51,"end_character":55},"updated":"2026-03-31 13:42:29.000000000","message":"If this interval is very short, we can call `self._funct(*self._args, **self._kwargs)` twice: here in `_loop` and in `start`.\n\nIn `start`, `self._funct(...)` should be called before the `self._thread.start()` call","commit_id":"8570ac3a00603678e4dd3dcae89cf8cd8258c0b8"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"923344342498571bcbec50261b5ef318b8a7fe77","unresolved":true,"context_lines":[{"line_number":48,"context_line":"    def _loop(self):"},{"line_number":49,"context_line":"        while self._running:"},{"line_number":50,"context_line":"            # Wait for interval, but can be interrupted by cancel_event"},{"line_number":51,"context_line":"            if self._cancel_event.wait(self._interval):"},{"line_number":52,"context_line":"                # Event was set \u003d\u003e reset or stop requested"},{"line_number":53,"context_line":"                self._cancel_event.clear()"},{"line_number":54,"context_line":"                if not self._running:"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf42e549_462cd9d1","line":51,"range":{"start_line":51,"start_character":12,"end_line":51,"end_character":55},"in_reply_to":"3f8395e3_483a0804","updated":"2026-04-01 11:05:55.000000000","message":"good idea, I moved  self._funct() call few lines upper to be sure it is started before the thread loop is started","commit_id":"8570ac3a00603678e4dd3dcae89cf8cd8258c0b8"}]}
