)]}'
{"neutron/api/rpc/handlers/l3_rpc.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"5a4e577e6c252565ece7f92246dcb71893844f30","unresolved":true,"context_lines":[{"line_number":127,"context_line":"                   \u0027host\u0027: host})"},{"line_number":128,"context_line":"        if extensions.is_extension_supported("},{"line_number":129,"context_line":"                self.plugin, constants.PORT_BINDING_EXT_ALIAS):"},{"line_number":130,"context_line":"            self._ensure_host_set_on_ports(context, host, routers)"},{"line_number":131,"context_line":"            # refresh the data structure after ports are bound"},{"line_number":132,"context_line":"            routers \u003d self._routers_to_sync(context, router_ids, host)"},{"line_number":133,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffb089c0_2457f0b3","line":130,"range":{"start_line":130,"start_character":58,"end_line":130,"end_character":65},"updated":"2022-06-01 01:47:38.000000000","message":"The call you moved is needed above to get the list of routers for this call.","commit_id":"af153be374e69b328e6a660802bb42925fd1540e"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"b55c9a1b560591be360315b1b6c84c9c8bef9ec5","unresolved":true,"context_lines":[{"line_number":127,"context_line":"                   \u0027host\u0027: host})"},{"line_number":128,"context_line":"        if extensions.is_extension_supported("},{"line_number":129,"context_line":"                self.plugin, constants.PORT_BINDING_EXT_ALIAS):"},{"line_number":130,"context_line":"            self._ensure_host_set_on_ports(context, host, routers)"},{"line_number":131,"context_line":"            # refresh the data structure after ports are bound"},{"line_number":132,"context_line":"            routers \u003d self._routers_to_sync(context, router_ids, host)"},{"line_number":133,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9155308c_ff36ce51","line":130,"range":{"start_line":130,"start_character":58,"end_line":130,"end_character":65},"in_reply_to":"ffb089c0_2457f0b3","updated":"2022-06-01 02:39:02.000000000","message":"yes, forget to swap to after line 132","commit_id":"af153be374e69b328e6a660802bb42925fd1540e"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"7951448f48c9a6854b69c088a6f17eeff04c4a94","unresolved":true,"context_lines":[{"line_number":130,"context_line":"                self.plugin, constants.PORT_BINDING_EXT_ALIAS):"},{"line_number":131,"context_line":"            self._ensure_host_set_on_ports(context, host, routers)"},{"line_number":132,"context_line":"            # refresh the data structure after ports are bound"},{"line_number":133,"context_line":"            routers \u003d self._routers_to_sync(context, router_ids, host)"},{"line_number":134,"context_line":"        pf_plugin \u003d directory.get_plugin(plugin_constants.PORTFORWARDING)"},{"line_number":135,"context_line":"        if pf_plugin:"},{"line_number":136,"context_line":"            pf_plugin.sync_port_forwarding_fip(context, routers)"}],"source_content_type":"text/x-python","patch_set":2,"id":"a8977ef3_c2181a33","side":"PARENT","line":133,"updated":"2022-06-01 20:15:48.000000000","message":"This code was actually put here to fix a race condition:\n\nhttps://bugs.launchpad.net/neutron/+bug/1759971\nhttps://review.opendev.org/c/openstack/neutron/+/558137\n\nI think removing it will re-introduce the bug.\n\nAs an alternative, can _ensure_host_set_on_ports() somehow return a status that it did some work? If it didn\u0027t then perhaps we don\u0027t need to re-sync?","commit_id":"f966ed8c1507706c01a3ac4f6f38315670ed2ba0"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"762e76e90a958a1db4d82c6402434e95d1490e73","unresolved":true,"context_lines":[{"line_number":130,"context_line":"                self.plugin, constants.PORT_BINDING_EXT_ALIAS):"},{"line_number":131,"context_line":"            self._ensure_host_set_on_ports(context, host, routers)"},{"line_number":132,"context_line":"            # refresh the data structure after ports are bound"},{"line_number":133,"context_line":"            routers \u003d self._routers_to_sync(context, router_ids, host)"},{"line_number":134,"context_line":"        pf_plugin \u003d directory.get_plugin(plugin_constants.PORTFORWARDING)"},{"line_number":135,"context_line":"        if pf_plugin:"},{"line_number":136,"context_line":"            pf_plugin.sync_port_forwarding_fip(context, routers)"}],"source_content_type":"text/x-python","patch_set":2,"id":"6f37f1f9_631415ef","side":"PARENT","line":133,"in_reply_to":"9b23eeed_2e83612f","updated":"2022-06-09 03:14:26.000000000","message":"Sorry for the late reply. I\u0027m still woking on this, _ensure_host_set_on_ports is using some routers information which returned by time-consuming _routers_to_sync. So, my idea is if we can change something inside _ensure_host_set_on_ports by using router_ids only. Then we can call _routers_to_sync one time.","commit_id":"f966ed8c1507706c01a3ac4f6f38315670ed2ba0"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"05a80de43bdb757bb3fe0ec1977211602abb4f49","unresolved":true,"context_lines":[{"line_number":130,"context_line":"                self.plugin, constants.PORT_BINDING_EXT_ALIAS):"},{"line_number":131,"context_line":"            self._ensure_host_set_on_ports(context, host, routers)"},{"line_number":132,"context_line":"            # refresh the data structure after ports are bound"},{"line_number":133,"context_line":"            routers \u003d self._routers_to_sync(context, router_ids, host)"},{"line_number":134,"context_line":"        pf_plugin \u003d directory.get_plugin(plugin_constants.PORTFORWARDING)"},{"line_number":135,"context_line":"        if pf_plugin:"},{"line_number":136,"context_line":"            pf_plugin.sync_port_forwarding_fip(context, routers)"}],"source_content_type":"text/x-python","patch_set":2,"id":"c3b1a700_d8a4652e","side":"PARENT","line":133,"in_reply_to":"a8977ef3_c2181a33","updated":"2022-06-02 03:00:50.000000000","message":"IMO, the main problems is the difference of \"routers\" between Line 128 and Line 133, if possible, we can add it in _ensure_host_set_on_port, something like line 214. And, I\u0027m not sure why L3-agent needs the port binding informations.","commit_id":"f966ed8c1507706c01a3ac4f6f38315670ed2ba0"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"a3de054e44434e637e7a2279929700b5872b7477","unresolved":true,"context_lines":[{"line_number":130,"context_line":"                self.plugin, constants.PORT_BINDING_EXT_ALIAS):"},{"line_number":131,"context_line":"            self._ensure_host_set_on_ports(context, host, routers)"},{"line_number":132,"context_line":"            # refresh the data structure after ports are bound"},{"line_number":133,"context_line":"            routers \u003d self._routers_to_sync(context, router_ids, host)"},{"line_number":134,"context_line":"        pf_plugin \u003d directory.get_plugin(plugin_constants.PORTFORWARDING)"},{"line_number":135,"context_line":"        if pf_plugin:"},{"line_number":136,"context_line":"            pf_plugin.sync_port_forwarding_fip(context, routers)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9b23eeed_2e83612f","side":"PARENT","line":133,"in_reply_to":"c3b1a700_d8a4652e","updated":"2022-06-02 14:51:02.000000000","message":"The bug I linked has a pretty good explanation of why the re-sync is needed, in short:\n\n\"a route to a tenant network does not get created in fip namespace if an external network is attached after a tenant network have been attached\"","commit_id":"f966ed8c1507706c01a3ac4f6f38315670ed2ba0"}]}
