)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"490e0e01ff8c22c067d36554926ea1fec2c54c5a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"0c9386b5_1dbfffc0","updated":"2025-04-01 12:09:07.000000000","message":"Thanks for the fix! Can you please add a unit test to verify the fix and prevent passible regressions in future?","commit_id":"0e7bde0f40257cd706d914b636fedacd3736b6bd"},{"author":{"_account_id":37889,"name":"Cyprian Kleist","display_name":"Cyprian Kleist","email":"ckleist@task.gda.pl","username":"ckleist"},"change_message_id":"fae75ae6f9fc96e2f6abc2890dcc44d5bb63c3a6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"040fedaa_a33d2f5e","in_reply_to":"0c9386b5_1dbfffc0","updated":"2025-04-03 10:31:32.000000000","message":"There has already been test for ip_monitor, but it has not checked if child processes are terminated properly. I tweaked the existing cleanup, so now:\n\n- without my patch in ip_monitor - the test detects zombie children and fails. \n- with my patch, the test passes every time","commit_id":"0e7bde0f40257cd706d914b636fedacd3736b6bd"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"512c9c07677acec6b715ef79e6912b263d68d0ce","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"6651baf7_26037807","updated":"2025-04-03 10:40:29.000000000","message":"So the test can actually reproduce the issue, right?","commit_id":"b7037fd0a88365c2cadd884db53a29f2d1d99d2f"},{"author":{"_account_id":37889,"name":"Cyprian Kleist","display_name":"Cyprian Kleist","email":"ckleist@task.gda.pl","username":"ckleist"},"change_message_id":"ea85ad6a8103ae76a38f2df743a8cc92f72900be","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"cd6ff6d6_0c5eb213","in_reply_to":"6651baf7_26037807","updated":"2025-04-03 10:54:25.000000000","message":"yes, it does","commit_id":"b7037fd0a88365c2cadd884db53a29f2d1d99d2f"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"c587b164e79ab9092aed7eb3a7ff4c9b0ef3daeb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"0c3f0910_3e93941f","updated":"2025-04-04 07:29:04.000000000","message":"Thanks!","commit_id":"b779aac993b00a60fe8c89101ba0af3a885fca0f"},{"author":{"_account_id":22835,"name":"Bartłomiej Daca","email":"bartek.daca@gmail.com","username":"bdaca"},"change_message_id":"63ad96fa436533d3687a731befd5c3f78452b939","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"6a488d1b_cca78402","updated":"2025-05-17 11:47:12.000000000","message":"Looks OK, tested in my environment and it helped with the problem described in the issue.","commit_id":"99b11769c9c7a4fca9f6ff10a6d077d35fe4b3bb"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"968a6e9418184689ea266d8877fed10a2c24f575","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"3008567c_c74be01e","updated":"2025-05-26 07:23:50.000000000","message":"The code looks fine but please check my comment.","commit_id":"99b11769c9c7a4fca9f6ff10a6d077d35fe4b3bb"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1044fc404497b69e3c8e8224a74b1323735467be","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"182f48db_9dcc7c04","updated":"2025-04-28 13:21:59.000000000","message":"looks ok, thanks","commit_id":"99b11769c9c7a4fca9f6ff10a6d077d35fe4b3bb"}],"neutron/agent/linux/ip_lib.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9071ffd458a157d255b9b5b1eb92b9f55093a30e","unresolved":true,"context_lines":[{"line_number":1523,"context_line":"            while True:"},{"line_number":1524,"context_line":"                ip_addresses \u003d _ip.get()"},{"line_number":1525,"context_line":"                for ip_address in ip_addresses:"},{"line_number":1526,"context_line":"                    if ip_address.get(\u0027error\u0027) \u003d\u003d errno.ECONNRESET:"},{"line_number":1527,"context_line":"                        return"},{"line_number":1528,"context_line":"                    LOG.debug(\"IP monitor %s; Adding IP address: %s \""},{"line_number":1529,"context_line":"                              \"to the queue.\", namespace, ip_address)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff4210c2_7e075fc0","line":1526,"range":{"start_line":1526,"start_character":20,"end_line":1526,"end_character":66},"updated":"2025-04-04 08:23:41.000000000","message":"Some questions here:\n* I can\u0027t reproduce the issue using the steps you provided in the bug. All I have is this [1] and that can be handled catching the exception at the end of this method.\n* The error is not in the ``ip_address`` dictionary, but in a nested one, inside ``header`` [2][3].\n\n[1]https://paste.opendev.org/show/b0jhTQVuFvduw1Mbr1Mp/\n[2]https://github.com/svinota/pyroute2/blob/e6a927cf8e3301eeccd6cba0a6d5f25c46825609/pyroute2/netns/manager.py#L35\n[3]Output example: https://paste.opendev.org/show/be5O8FejyKzuoT063jU5/","commit_id":"b779aac993b00a60fe8c89101ba0af3a885fca0f"},{"author":{"_account_id":37889,"name":"Cyprian Kleist","display_name":"Cyprian Kleist","email":"ckleist@task.gda.pl","username":"ckleist"},"change_message_id":"f65dc3e730704caeaa7e9f594768228e53de2ed6","unresolved":true,"context_lines":[{"line_number":1523,"context_line":"            while True:"},{"line_number":1524,"context_line":"                ip_addresses \u003d _ip.get()"},{"line_number":1525,"context_line":"                for ip_address in ip_addresses:"},{"line_number":1526,"context_line":"                    if ip_address.get(\u0027error\u0027) \u003d\u003d errno.ECONNRESET:"},{"line_number":1527,"context_line":"                        return"},{"line_number":1528,"context_line":"                    LOG.debug(\"IP monitor %s; Adding IP address: %s \""},{"line_number":1529,"context_line":"                              \"to the queue.\", namespace, ip_address)"}],"source_content_type":"text/x-python","patch_set":3,"id":"43bd44a5_774a0b31","line":1526,"range":{"start_line":1526,"start_character":20,"end_line":1526,"end_character":66},"in_reply_to":"d3560f8d_e8140324","updated":"2025-04-10 09:17:36.000000000","message":"Thank you for your feedback. I have double checked my patch and I have been able to reproduce your error.\nThe reason why you couldn\u0027t reproduce the issue was probably too new version or pyroute2 (0.9.1) - according to [1] the upper constraint for the version on master is 0.8.1 and previously I was testing my patch with this version.\nAnyway I have added catching error of this new version anticipating update of pyroute2 and also extracting the original error from the header (as you suggested).\n\n[1] https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt","commit_id":"b779aac993b00a60fe8c89101ba0af3a885fca0f"},{"author":{"_account_id":37898,"name":"Piotr Korthals","email":"pkorthals@task.gda.pl","username":"korthals.piotr"},"change_message_id":"6a841bcb5dfef9ce254313e594a91be143a8fc3d","unresolved":true,"context_lines":[{"line_number":1523,"context_line":"            while True:"},{"line_number":1524,"context_line":"                ip_addresses \u003d _ip.get()"},{"line_number":1525,"context_line":"                for ip_address in ip_addresses:"},{"line_number":1526,"context_line":"                    if ip_address.get(\u0027error\u0027) \u003d\u003d errno.ECONNRESET:"},{"line_number":1527,"context_line":"                        return"},{"line_number":1528,"context_line":"                    LOG.debug(\"IP monitor %s; Adding IP address: %s \""},{"line_number":1529,"context_line":"                              \"to the queue.\", namespace, ip_address)"}],"source_content_type":"text/x-python","patch_set":3,"id":"d3560f8d_e8140324","line":1526,"range":{"start_line":1526,"start_character":20,"end_line":1526,"end_character":66},"in_reply_to":"ff4210c2_7e075fc0","updated":"2025-04-04 15:17:04.000000000","message":"Hi,\n\nDid you try to run with proute2\u003d\u003d0.9.1? I reproduced your error on this version of pyroute2.\n\nI believe neutron is using [1] which points to [2] finally pointing to [3] giving output [4]\n\nSo error as code is in `ip_address[\u0027error\u0027]` and as exception class in `ip_address[\u0027header\u0027][\u0027error\u0027]` \n\nDuring analyze of bug i connected ins single script some parts from neturon code. i am able to reproduce similar behavior using [5]\n\n[1] https://github.com/svinota/pyroute2/blob/0.8.1/pyroute2/nslink/nslink.py#L96 \n[2] https://github.com/svinota/pyroute2/blob/0.8.1/pyroute2/netlink/nlsocket.py#L944\n[3] https://github.com/svinota/pyroute2/blob/0.8.1/pyroute2/netlink/nlsocket.py#L455\n[4] Exact output using pyroute2\u003d\u003e0.7.3 \u003c\u003d0.8.1 - https://paste.opendev.org/show/bQ5FONbR1vI3DUzzW0hf/\n[5] https://paste.opendev.org/show/bEm52zggvSrZu5jz1G32/","commit_id":"b779aac993b00a60fe8c89101ba0af3a885fca0f"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"968a6e9418184689ea266d8877fed10a2c24f575","unresolved":true,"context_lines":[{"line_number":1524,"context_line":"                ip_addresses \u003d _ip.get()"},{"line_number":1525,"context_line":"                for ip_address in ip_addresses:"},{"line_number":1526,"context_line":"                    if ip_address.get(\u0027header\u0027, {}).get(\u0027error\u0027):"},{"line_number":1527,"context_line":"                        raise ip_address.get(\u0027header\u0027, {}).get(\u0027error\u0027)"},{"line_number":1528,"context_line":"                    LOG.debug(\"IP monitor %s; Adding IP address: %s \""},{"line_number":1529,"context_line":"                              \"to the queue.\", namespace, ip_address)"},{"line_number":1530,"context_line":"                    _queue.put(ip_address)"}],"source_content_type":"text/x-python","patch_set":4,"id":"a5c249b0_27637ee3","line":1527,"range":{"start_line":1527,"start_character":24,"end_line":1527,"end_character":71},"updated":"2025-05-26 07:23:50.000000000","message":"This is a bit risky. There is nothing defined in the pyroute2 API saying this is an exception. At least we should check it.","commit_id":"99b11769c9c7a4fca9f6ff10a6d077d35fe4b3bb"}]}
