)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3da99ed3b2f20af40c9b0a88d4996ae8f39acda0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"f26a1e0e_1e4d8759","updated":"2024-11-20 15:13:01.000000000","message":"Same error in ``neutron.tests.functional.agent.test_dhcp_agent.DHCPAgentOVSTestCase.test_metadata_proxy_respawned``, I need to check it","commit_id":"6976885b04b28be1f1d9efabdf78cce06d9d9f09"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"c601533dba1599955806f6eb450203911766fba2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"896e256a_c2828bef","updated":"2024-12-27 08:37:54.000000000","message":"Generally looks good, with only a few minor issues.","commit_id":"b2fdd3b5a81b13df5818818f3466de55e5488323"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"fc1c6725349d10bfb03b5b39fbb4e0bb0d33c36a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"ba99a7a3_15ae7419","updated":"2024-12-23 15:52:22.000000000","message":"recheck neutron-ovn-tempest-ipv6-only-ovs-release","commit_id":"b2fdd3b5a81b13df5818818f3466de55e5488323"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"e660727c5f5f1a490eeb05993dbab58519fb435c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"7095cf7a_8bfec5ed","updated":"2025-01-02 01:34:57.000000000","message":"LGTM","commit_id":"0c29e730db2629c084de0c114a0d1e8e6939ac25"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"157a7ba2bdab5d52a3d81518b7e41a14bcdcbbca","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"929ec628_c7717613","updated":"2025-01-02 13:32:13.000000000","message":"recheck neutron-fullstack","commit_id":"0c29e730db2629c084de0c114a0d1e8e6939ac25"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"40704ad698f4408b31bb05517710138a8d40c685","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"07617427_4eea1738","updated":"2025-01-02 07:11:53.000000000","message":"recheck neutron-ovs-tempest-multinode-full","commit_id":"0c29e730db2629c084de0c114a0d1e8e6939ac25"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c1a21ff028a3461acd320030e052e8aab6493ee5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"f0090038_69a211ab","updated":"2025-01-02 15:48:44.000000000","message":"recheck neutron-tempest-plugin-openvswitch-iptables_hybrid","commit_id":"0c29e730db2629c084de0c114a0d1e8e6939ac25"}],"neutron/agent/linux/external_process.py":[{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"c601533dba1599955806f6eb450203911766fba2","unresolved":true,"context_lines":[{"line_number":124,"context_line":"                                     run_as_root\u003dself.run_as_root,"},{"line_number":125,"context_line":"                                     privsep_exec\u003dTrue)"},{"line_number":126,"context_line":"        except n_exc.ProcessExecutionError as exc:"},{"line_number":127,"context_line":"            if (\u0027No such process\u0027 not in str(exc) and"},{"line_number":128,"context_line":"                    \u0027Cannot open network namespace\u0027 not in str(exc)):"},{"line_number":129,"context_line":"                raise"},{"line_number":130,"context_line":"            LOG.debug(\u0027Process %s not present when \"kill\" command sent\u0027, pid)"}],"source_content_type":"text/x-python","patch_set":8,"id":"d30b05da_0baff7f3","line":127,"range":{"start_line":127,"start_character":41,"end_line":127,"end_character":49},"updated":"2024-12-27 08:37:54.000000000","message":"It\u0027s better to use the exc.message, not str(exc).","commit_id":"b2fdd3b5a81b13df5818818f3466de55e5488323"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"c601533dba1599955806f6eb450203911766fba2","unresolved":true,"context_lines":[{"line_number":124,"context_line":"                                     run_as_root\u003dself.run_as_root,"},{"line_number":125,"context_line":"                                     privsep_exec\u003dTrue)"},{"line_number":126,"context_line":"        except n_exc.ProcessExecutionError as exc:"},{"line_number":127,"context_line":"            if (\u0027No such process\u0027 not in str(exc) and"},{"line_number":128,"context_line":"                    \u0027Cannot open network namespace\u0027 not in str(exc)):"},{"line_number":129,"context_line":"                raise"},{"line_number":130,"context_line":"            LOG.debug(\u0027Process %s not present when \"kill\" command sent\u0027, pid)"}],"source_content_type":"text/x-python","patch_set":8,"id":"35df4795_1cccf427","line":127,"range":{"start_line":127,"start_character":11,"end_line":127,"end_character":16},"updated":"2024-12-27 08:37:54.000000000","message":"Should also check the exc.returncode here?","commit_id":"b2fdd3b5a81b13df5818818f3466de55e5488323"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"358e0b3fa040e97dcfd0326f72cad2898a1b696f","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                                     run_as_root\u003dself.run_as_root,"},{"line_number":125,"context_line":"                                     privsep_exec\u003dTrue)"},{"line_number":126,"context_line":"        except n_exc.ProcessExecutionError as exc:"},{"line_number":127,"context_line":"            if (\u0027No such process\u0027 not in str(exc) and"},{"line_number":128,"context_line":"                    \u0027Cannot open network namespace\u0027 not in str(exc)):"},{"line_number":129,"context_line":"                raise"},{"line_number":130,"context_line":"            LOG.debug(\u0027Process %s not present when \"kill\" command sent\u0027, pid)"}],"source_content_type":"text/x-python","patch_set":8,"id":"777b8b8b_de47a058","line":127,"range":{"start_line":127,"start_character":11,"end_line":127,"end_character":16},"in_reply_to":"35df4795_1cccf427","updated":"2024-12-30 07:05:39.000000000","message":"When using namespaces, the error code is always 1 regardless of the type of error.","commit_id":"b2fdd3b5a81b13df5818818f3466de55e5488323"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"358e0b3fa040e97dcfd0326f72cad2898a1b696f","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                                     run_as_root\u003dself.run_as_root,"},{"line_number":125,"context_line":"                                     privsep_exec\u003dTrue)"},{"line_number":126,"context_line":"        except n_exc.ProcessExecutionError as exc:"},{"line_number":127,"context_line":"            if (\u0027No such process\u0027 not in str(exc) and"},{"line_number":128,"context_line":"                    \u0027Cannot open network namespace\u0027 not in str(exc)):"},{"line_number":129,"context_line":"                raise"},{"line_number":130,"context_line":"            LOG.debug(\u0027Process %s not present when \"kill\" command sent\u0027, pid)"}],"source_content_type":"text/x-python","patch_set":8,"id":"acdd89cf_edbb3be6","line":127,"range":{"start_line":127,"start_character":41,"end_line":127,"end_character":49},"in_reply_to":"d30b05da_0baff7f3","updated":"2024-12-30 07:05:39.000000000","message":"``ProcessExecutionError`` does not have message as member of the class, all is stored in args. This exception inherits from ``RuntimeError``, not ``NeutronException``","commit_id":"b2fdd3b5a81b13df5818818f3466de55e5488323"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"c601533dba1599955806f6eb450203911766fba2","unresolved":true,"context_lines":[{"line_number":124,"context_line":"                                     run_as_root\u003dself.run_as_root,"},{"line_number":125,"context_line":"                                     privsep_exec\u003dTrue)"},{"line_number":126,"context_line":"        except n_exc.ProcessExecutionError as exc:"},{"line_number":127,"context_line":"            if (\u0027No such process\u0027 not in str(exc) and"},{"line_number":128,"context_line":"                    \u0027Cannot open network namespace\u0027 not in str(exc)):"},{"line_number":129,"context_line":"                raise"},{"line_number":130,"context_line":"            LOG.debug(\u0027Process %s not present when \"kill\" command sent\u0027, pid)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def disable(self, sig\u003d\u00279\u0027, get_stop_command\u003dNone, delete_pid_file\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":8,"id":"e4ee71f1_a590f024","line":129,"range":{"start_line":127,"start_character":0,"end_line":129,"end_character":21},"updated":"2024-12-27 08:37:54.000000000","message":"nit: should use oslo_utils.excutils save_and_reraise_exception for such case?","commit_id":"b2fdd3b5a81b13df5818818f3466de55e5488323"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"358e0b3fa040e97dcfd0326f72cad2898a1b696f","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                                     run_as_root\u003dself.run_as_root,"},{"line_number":125,"context_line":"                                     privsep_exec\u003dTrue)"},{"line_number":126,"context_line":"        except n_exc.ProcessExecutionError as exc:"},{"line_number":127,"context_line":"            if (\u0027No such process\u0027 not in str(exc) and"},{"line_number":128,"context_line":"                    \u0027Cannot open network namespace\u0027 not in str(exc)):"},{"line_number":129,"context_line":"                raise"},{"line_number":130,"context_line":"            LOG.debug(\u0027Process %s not present when \"kill\" command sent\u0027, pid)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def disable(self, sig\u003d\u00279\u0027, get_stop_command\u003dNone, delete_pid_file\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":8,"id":"591b4a7c_ab44d2c9","line":129,"range":{"start_line":127,"start_character":0,"end_line":129,"end_character":21},"in_reply_to":"e4ee71f1_a590f024","updated":"2024-12-30 07:05:39.000000000","message":"Done","commit_id":"b2fdd3b5a81b13df5818818f3466de55e5488323"}],"neutron/tests/functional/agent/linux/test_external_process.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"8ac15e1d5e4be57e796871b092a88706f26d54b0","unresolved":true,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def test__kill_process_process_not_present(self):"},{"line_number":54,"context_line":"        pm \u003d self._create_sleep_process(time\u003d0)"},{"line_number":55,"context_line":"        # \"sleep 0\" should end immediately"},{"line_number":56,"context_line":"        self.assertFalse(pm.active)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        # \u0027_kill_process\u0027 should not raise any exception."}],"source_content_type":"text/x-python","patch_set":4,"id":"69e75d6f_dba560e4","line":55,"updated":"2024-11-19 22:20:51.000000000","message":"nit: there\u0027s probably a very slight race here: while sleep 0 should end nearly instantly, it\u0027s not guaranteed to do so and may hold for long enough for line 56 to fail before the sleep process completely exits. One way to fix it would be to spin for a (short) time until pm.active is False.\n\nThat said, it\u0027s probably a theoretical issue, so I\u0027m ok with merging it as-is.","commit_id":"d93bba10b18968cb31f98b45b5e39bc721679c23"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7c2b62e5becee2c051992db13abcca63b419caa1","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def test__kill_process_process_not_present(self):"},{"line_number":54,"context_line":"        pm \u003d self._create_sleep_process(time\u003d0)"},{"line_number":55,"context_line":"        # \"sleep 0\" should end immediately"},{"line_number":56,"context_line":"        self.assertFalse(pm.active)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        # \u0027_kill_process\u0027 should not raise any exception."}],"source_content_type":"text/x-python","patch_set":4,"id":"5a98f710_efbd2e89","line":55,"in_reply_to":"69e75d6f_dba560e4","updated":"2024-11-20 10:06:42.000000000","message":"We can add an active wait for \"not pm.active\" in L56, with a timeout of 3 seconds. That will guarantee that sleep(0) ends. This safeguard must not be needed in the next check (L60). At this point, this process must not exist.","commit_id":"d93bba10b18968cb31f98b45b5e39bc721679c23"}]}
