)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"38585a69cf1ea7ddf084f7a772e125f0e875a6eb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"d52d7bac_71a68cb5","updated":"2025-11-12 15:12:30.000000000","message":"let\u0027s see if tempest will be happy and clean it","commit_id":"da5e143e50a0d22151c3ea6abd30608e94472785"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"e906989085bfc38c58ae8c1ea6ef424aa56d7f5c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"6eb8405f_310b3545","updated":"2025-11-13 19:49:29.000000000","message":"recheck\nfunctional timeout should be related but let\u0027s see if tempest is ok now (ovs-tempest-multinode-full failed with some shelve issue)","commit_id":"96e2ef9e7e600d607b9834ab2fb7a921cba1ff73"}],"neutron/agent/dhcp/agent.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3f9c012598d0e0557b65c80c78e4786e71b2cc23","unresolved":true,"context_lines":[{"line_number":614,"context_line":"    def _process_loop(self):"},{"line_number":615,"context_line":"        LOG.debug(\"Starting _process_loop\")"},{"line_number":616,"context_line":""},{"line_number":617,"context_line":"        while self._exiting:"},{"line_number":618,"context_line":"            self._pool.submit(self._process_resource_update)"},{"line_number":619,"context_line":""},{"line_number":620,"context_line":"    def _process_resource_update(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"42c75d7c_1d317bcf","line":617,"updated":"2025-10-08 13:56:09.000000000","message":"I thought these were supposed to be \"not self._exiting\" ? Like the l3-agent","commit_id":"f0d17ad8cbb4748d5bb9679ee1f67724fbccd355"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"16d2082c6262658483455691cdfb2dcef9f0713e","unresolved":true,"context_lines":[{"line_number":614,"context_line":"    def _process_loop(self):"},{"line_number":615,"context_line":"        LOG.debug(\"Starting _process_loop\")"},{"line_number":616,"context_line":""},{"line_number":617,"context_line":"        while self._exiting:"},{"line_number":618,"context_line":"            self._pool.submit(self._process_resource_update)"},{"line_number":619,"context_line":""},{"line_number":620,"context_line":"    def _process_resource_update(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"18256d1c_fde0c9db","line":617,"in_reply_to":"42c75d7c_1d317bcf","updated":"2025-10-08 17:36:29.000000000","message":"my bad, true. before living the office I messed up these booleans...\nMy pain is that the service is till hanging after stop and the log has lines like these:\nDEBUG oslo_concurrency.lockutils [-] Lock \"_check_child_processes\" acquired by \"neutron.agent.linux.external_process.ProcessMonitor._check_child_processes\"\nDEBUG oslo_concurrency.lockutils [-] Lock \"_check_child_processes\" \"released\" by \"neutron.agent.linux.external_process.ProcessMonitor._check_child_processes\"","commit_id":"f0d17ad8cbb4748d5bb9679ee1f67724fbccd355"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6d218cd7d428bc90d8f3faafc10f570121ccf73c","unresolved":true,"context_lines":[{"line_number":111,"context_line":"    def __init__(self, host\u003dNone, conf\u003dNone):"},{"line_number":112,"context_line":"        super().__init__(host\u003dhost)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        signal.signal(signal.SIGTERM, self._signal_handler)"},{"line_number":115,"context_line":"        signal.signal(signal.SIGINT, self._signal_handler)"},{"line_number":116,"context_line":"        self._exiting \u003d False"},{"line_number":117,"context_line":"        self._stopping_event \u003d threading.Event()"},{"line_number":118,"context_line":"        self._threads \u003d []"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        self.needs_resync_reasons \u003d collections.defaultdict(list)"},{"line_number":121,"context_line":"        self.dhcp_ready_ports \u003d set()"}],"source_content_type":"text/x-python","patch_set":8,"id":"0ebe7b9d_8daf4f49","line":118,"range":{"start_line":114,"start_character":8,"end_line":118,"end_character":26},"updated":"2025-11-14 14:59:43.000000000","message":"The signals are handled by cotyledon (oslo.service threading implementation).\n\nAny thread related object (`self._stopping_event`) should be created outside this method (move it to `init_host`).","commit_id":"96e2ef9e7e600d607b9834ab2fb7a921cba1ff73"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"d6823838bd772f4889418a81c4f2920467ab8966","unresolved":false,"context_lines":[{"line_number":111,"context_line":"    def __init__(self, host\u003dNone, conf\u003dNone):"},{"line_number":112,"context_line":"        super().__init__(host\u003dhost)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        signal.signal(signal.SIGTERM, self._signal_handler)"},{"line_number":115,"context_line":"        signal.signal(signal.SIGINT, self._signal_handler)"},{"line_number":116,"context_line":"        self._exiting \u003d False"},{"line_number":117,"context_line":"        self._stopping_event \u003d threading.Event()"},{"line_number":118,"context_line":"        self._threads \u003d []"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        self.needs_resync_reasons \u003d collections.defaultdict(list)"},{"line_number":121,"context_line":"        self.dhcp_ready_ports \u003d set()"}],"source_content_type":"text/x-python","patch_set":8,"id":"bef57079_099239e5","line":118,"range":{"start_line":114,"start_character":8,"end_line":118,"end_character":26},"in_reply_to":"0ebe7b9d_8daf4f49","updated":"2025-11-17 09:27:20.000000000","message":"Done","commit_id":"96e2ef9e7e600d607b9834ab2fb7a921cba1ff73"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"d6823838bd772f4889418a81c4f2920467ab8966","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        self._exiting \u003d True"},{"line_number":200,"context_line":"        self._stopping_event.set()"},{"line_number":201,"context_line":"        super().stop()"},{"line_number":202,"context_line":"        self._queue._run \u003d False"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        self._process_monitor.stop()"},{"line_number":205,"context_line":"        self.cache.cleanup_loop.stop()"}],"source_content_type":"text/x-python","patch_set":9,"id":"3ecddf44_d6fccef2","line":202,"range":{"start_line":202,"start_character":8,"end_line":202,"end_character":32},"updated":"2025-11-17 09:27:20.000000000","message":"nit (for a follow-up patch): we need something to avoid calling a private member.","commit_id":"6b6bbd19e72164e475efbaf434a890b78f2601a0"}]}
