)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"140616beb401e377f7ead594fadf80c5604b5768","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"1f5ade47_8b0dff3b","updated":"2022-03-23 08:28:00.000000000","message":"IIUC what we discussed yesterday, for now we shouldn\u0027t go with that patch and we should block versions 0.6.6 and 0.6.7 of the pyroute2. \nLater, when bug in pyroute2 will be fixed we can move on with this patch too. Is that correct?","commit_id":"74a9e832d790f659eb10b22ba0428b60733d384e"}],"neutron/privileged/agent/linux/ip_lib.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"47448c7fa8f9b08d3c36fb9e449b85b875a31bae","unresolved":true,"context_lines":[{"line_number":562,"context_line":""},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"@privileged.default.entrypoint"},{"line_number":565,"context_line":"@tenacity.retry("},{"line_number":566,"context_line":"    retry\u003dtenacity.retry_if_exception_type("},{"line_number":567,"context_line":"        netlink_exceptions.NetlinkDumpInterrupted),"},{"line_number":568,"context_line":"    wait\u003dtenacity.wait_exponential(multiplier\u003d0.02, max\u003d1),"}],"source_content_type":"text/x-python","patch_set":1,"id":"1d466b6a_9176aa1d","line":565,"range":{"start_line":565,"start_character":1,"end_line":565,"end_character":9},"updated":"2022-03-10 10:15:50.000000000","message":"I know this is still a WIP patch.\n\nSome comments:\n1) I would add this decorator before the privsep one. As is now, the retry will be done inside the privsep context. That could take time and starve other privsep threads.\n\n2) This \"NetlinkDumpInterrupted\" exception was added to \"NetlinkMixin.nlm_request\", that is the parent class of \"NetlinkSocket\".\n\n\"IPRoute\" (most of our Pyroute2 commands use it) is:\n  class IPRoute(RTNL_API, IPRSocket)\n  --\u003e class IPRSocket(IPRSocketMixin, NetlinkSocket)\n  --\u003e class NetlinkSocket(NetlinkMixin)\n\nThat means almost any command we use (\"tc\", \"bridge\", \"neigh\", \"ip-link\", \"ip-addr\", \"ip-route\", \"ip-rule\") uses \"nlm_request\" to send and receive a request from the \"iproute\" library.","commit_id":"d8b62d4a287d9e150197b6d511875d2fd7d0e242"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"f4bb668ac2c71ff76cc00a1d4242b8ea4eb39685","unresolved":true,"context_lines":[{"line_number":562,"context_line":""},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"@privileged.default.entrypoint"},{"line_number":565,"context_line":"@tenacity.retry("},{"line_number":566,"context_line":"    retry\u003dtenacity.retry_if_exception_type("},{"line_number":567,"context_line":"        netlink_exceptions.NetlinkDumpInterrupted),"},{"line_number":568,"context_line":"    wait\u003dtenacity.wait_exponential(multiplier\u003d0.02, max\u003d1),"}],"source_content_type":"text/x-python","patch_set":1,"id":"aef86197_428c1b41","line":565,"range":{"start_line":565,"start_character":1,"end_line":565,"end_character":9},"in_reply_to":"1d466b6a_9176aa1d","updated":"2022-03-10 13:42:19.000000000","message":"1) ack\n2) If I understand from [1] \u0026 [2] and from your comment (and the code in pyroute which you referenced), we have to add retry logic to all get_* / list_* methods? Like get_ip_addresses, list_ip_rules, list_ip_routes...\n\n[1]: https://elixir.bootlin.com/linux/v3.2/source/include/linux/netlink.h#L53\n[2]: https://elixir.bootlin.com/linux/v3.2/source/include/net/netlink.h#L649","commit_id":"d8b62d4a287d9e150197b6d511875d2fd7d0e242"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"aefb5061dbb2e09d5c3c45827e8b5bef059666bb","unresolved":true,"context_lines":[{"line_number":562,"context_line":""},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"@privileged.default.entrypoint"},{"line_number":565,"context_line":"@tenacity.retry("},{"line_number":566,"context_line":"    retry\u003dtenacity.retry_if_exception_type("},{"line_number":567,"context_line":"        netlink_exceptions.NetlinkDumpInterrupted),"},{"line_number":568,"context_line":"    wait\u003dtenacity.wait_exponential(multiplier\u003d0.02, max\u003d1),"}],"source_content_type":"text/x-python","patch_set":1,"id":"b1d8b78a_f8dbb444","line":565,"range":{"start_line":565,"start_character":1,"end_line":565,"end_character":9},"in_reply_to":"aef86197_428c1b41","updated":"2022-03-14 08:59:54.000000000","message":"Yeah, I think we\u0027ll need to add this retry to all those methods that could return NetlinkDumpInterrupted.","commit_id":"d8b62d4a287d9e150197b6d511875d2fd7d0e242"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"2cd7ebb69abd18e67e74e755cd52ba570523d483","unresolved":true,"context_lines":[{"line_number":562,"context_line":""},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"@privileged.default.entrypoint"},{"line_number":565,"context_line":"@tenacity.retry("},{"line_number":566,"context_line":"    retry\u003dtenacity.retry_if_exception_type("},{"line_number":567,"context_line":"        netlink_exceptions.NetlinkDumpInterrupted),"},{"line_number":568,"context_line":"    wait\u003dtenacity.wait_exponential(multiplier\u003d0.02, max\u003d1),"}],"source_content_type":"text/x-python","patch_set":1,"id":"d7f334c4_a8be3b7e","line":565,"range":{"start_line":565,"start_character":1,"end_line":565,"end_character":9},"in_reply_to":"b1d8b78a_f8dbb444","updated":"2022-03-16 18:45:18.000000000","message":"done","commit_id":"d8b62d4a287d9e150197b6d511875d2fd7d0e242"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"5bcd199ab8e74dd8d9b418eb975b38c7eb0bda62","unresolved":true,"context_lines":[{"line_number":564,"context_line":"@privileged.default.entrypoint"},{"line_number":565,"context_line":"@tenacity.retry("},{"line_number":566,"context_line":"    retry\u003dtenacity.retry_if_exception_type("},{"line_number":567,"context_line":"        netlink_exceptions.NetlinkDumpInterrupted),"},{"line_number":568,"context_line":"    wait\u003dtenacity.wait_exponential(multiplier\u003d0.02, max\u003d1),"},{"line_number":569,"context_line":"    stop\u003dtenacity.stop_after_delay(8),"},{"line_number":570,"context_line":"    reraise\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5429dd7f_3d0606c5","line":567,"updated":"2022-03-15 08:35:14.000000000","message":"You will probably need to bump lower-constraint\u0027s requirements too as now lower-constraints job is failing due to missing that exception","commit_id":"d8b62d4a287d9e150197b6d511875d2fd7d0e242"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"2cd7ebb69abd18e67e74e755cd52ba570523d483","unresolved":true,"context_lines":[{"line_number":564,"context_line":"@privileged.default.entrypoint"},{"line_number":565,"context_line":"@tenacity.retry("},{"line_number":566,"context_line":"    retry\u003dtenacity.retry_if_exception_type("},{"line_number":567,"context_line":"        netlink_exceptions.NetlinkDumpInterrupted),"},{"line_number":568,"context_line":"    wait\u003dtenacity.wait_exponential(multiplier\u003d0.02, max\u003d1),"},{"line_number":569,"context_line":"    stop\u003dtenacity.stop_after_delay(8),"},{"line_number":570,"context_line":"    reraise\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"6a6265c4_a84b0d3c","line":567,"in_reply_to":"5429dd7f_3d0606c5","updated":"2022-03-16 18:45:18.000000000","message":"sure, I changed it to 0.6.6 which introduced NLM_F_DUMP_INTR handling and NetlinkDumpInterrupted","commit_id":"d8b62d4a287d9e150197b6d511875d2fd7d0e242"}]}
