)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"246fd91739a29d02b67020501e193415e7c40ad0","unresolved":true,"context_lines":[{"line_number":12,"context_line":"and appears again from the kernel namespace, as seen in the udev"},{"line_number":13,"context_line":"messages."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This patch is a workaround until the real issue is addressed (if"},{"line_number":16,"context_line":"possible), retrying the interface configuration for a small period"},{"line_number":17,"context_line":"of time."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"db8451fc_6aa0e632","line":15,"range":{"start_line":15,"start_character":33,"end_line":15,"end_character":47},"updated":"2021-02-19 16:19:18.000000000","message":"L3 agent will call the plug interface with ovs.replace_port [1] which just delete and re-add the port [2]. Actually your log [3] line 19-21 just show this behavior. Maybe we should revisit the old bug [4] which is mentioned in code [2] comments.\n\nA potential solution is to re-wirte such `replace` method. We should not delete the port. We can just clean the ovsdb port attributes, and update it with the new information (I don\u0027t know if it really works).\n\n[1] https://github.com/openstack/neutron/blob/master/neutron/agent/linux/interface.py#L370\n[2] https://github.com/openstack/neutron/blob/master/neutron/agent/common/ovs_lib.py#L333\n[3] http://paste.openstack.org/show/802779/\n[4] https://bugs.launchpad.net/neutron/+bug/1519926","commit_id":"2b0c9946f15b45fa9be0f9e76b6a9afc10655ac6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"cf6a4c4f7777cdc59b62200daa24b6245d9aca69","unresolved":true,"context_lines":[{"line_number":12,"context_line":"and appears again from the kernel namespace, as seen in the udev"},{"line_number":13,"context_line":"messages."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This patch is a workaround until the real issue is addressed (if"},{"line_number":16,"context_line":"possible), retrying the interface configuration for a small period"},{"line_number":17,"context_line":"of time."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"193d0186_fb4a2802","line":15,"range":{"start_line":15,"start_character":33,"end_line":15,"end_character":47},"in_reply_to":"db8451fc_6aa0e632","updated":"2021-03-03 09:11:36.000000000","message":"But I\u0027m talking about the GW interface that is not an OVS port. I don\u0027t understand how [2][4] is affecting to this interface. Actually [4] is related to the L3 agent restart; the bug of this patch is related to the HA router transition to master and the status (UP/DOWN) of the GW interface. I don\u0027t see any relation between those two issues.","commit_id":"2b0c9946f15b45fa9be0f9e76b6a9afc10655ac6"}],"neutron/agent/l3/ha_router.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"6d9d8fb94f6d084b2d6e3ec17f60ba063254480e","unresolved":true,"context_lines":[{"line_number":553,"context_line":"        if ex_gw_port_id:"},{"line_number":554,"context_line":"            interface_name \u003d self.get_external_device_name(ex_gw_port_id)"},{"line_number":555,"context_line":"            ns_name \u003d self.get_gw_ns_name()"},{"line_number":556,"context_line":"            if link_up and not self.driver.set_link_status("},{"line_number":557,"context_line":"                    interface_name, namespace\u003dns_name, link_up\u003dlink_up):"},{"line_number":558,"context_line":"                LOG.warning(\u0027Gateway interface for router %s was not set up; \u0027"},{"line_number":559,"context_line":"                            \u0027router will not work properly\u0027, self.router_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"626b0461_7c1a69a7","line":556,"updated":"2021-02-19 14:43:23.000000000","message":"This won\u0027t call set_link_status() to set the link down if i\u0027m reading it right","commit_id":"33332ee79ff9655ad860fabc3954a01e303c7f72"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"92b264fe41386f5009e2661ae154498db24dc5aa","unresolved":true,"context_lines":[{"line_number":553,"context_line":"        if ex_gw_port_id:"},{"line_number":554,"context_line":"            interface_name \u003d self.get_external_device_name(ex_gw_port_id)"},{"line_number":555,"context_line":"            ns_name \u003d self.get_gw_ns_name()"},{"line_number":556,"context_line":"            if link_up and not self.driver.set_link_status("},{"line_number":557,"context_line":"                    interface_name, namespace\u003dns_name, link_up\u003dlink_up):"},{"line_number":558,"context_line":"                LOG.warning(\u0027Gateway interface for router %s was not set up; \u0027"},{"line_number":559,"context_line":"                            \u0027router will not work properly\u0027, self.router_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"6880096f_552d0883","line":556,"in_reply_to":"626b0461_7c1a69a7","updated":"2021-02-19 15:57:42.000000000","message":"Upsss!! That\u0027s a veeeery good catch","commit_id":"33332ee79ff9655ad860fabc3954a01e303c7f72"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"54c6e265ac82c7473dc3739ec080ffcd8bdd22eb","unresolved":true,"context_lines":[{"line_number":554,"context_line":"            interface_name \u003d self.get_external_device_name(ex_gw_port_id)"},{"line_number":555,"context_line":"            ns_name \u003d self.get_gw_ns_name()"},{"line_number":556,"context_line":"            if not self.driver.set_link_status("},{"line_number":557,"context_line":"                    interface_name, namespace\u003dns_name, link_up\u003dlink_up) and \\"},{"line_number":558,"context_line":"                    link_up:"},{"line_number":559,"context_line":"                LOG.warning(\u0027Gateway interface for router %s was not set up; \u0027"},{"line_number":560,"context_line":"                            \u0027router will not work properly\u0027, self.router_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5c6d721e_28a5da89","line":557,"range":{"start_line":557,"start_character":76,"end_line":557,"end_character":77},"updated":"2021-02-24 14:37:45.000000000","message":":\u0027(  backslashes lead to global warming :)","commit_id":"2b0c9946f15b45fa9be0f9e76b6a9afc10655ac6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c9679ee2bef6c5120f38bb90665d530cfe6a953b","unresolved":true,"context_lines":[{"line_number":554,"context_line":"            interface_name \u003d self.get_external_device_name(ex_gw_port_id)"},{"line_number":555,"context_line":"            ns_name \u003d self.get_gw_ns_name()"},{"line_number":556,"context_line":"            if not self.driver.set_link_status("},{"line_number":557,"context_line":"                    interface_name, namespace\u003dns_name, link_up\u003dlink_up) and \\"},{"line_number":558,"context_line":"                    link_up:"},{"line_number":559,"context_line":"                LOG.warning(\u0027Gateway interface for router %s was not set up; \u0027"},{"line_number":560,"context_line":"                            \u0027router will not work properly\u0027, self.router_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5bdd172a_ee269cdd","line":557,"range":{"start_line":557,"start_character":76,"end_line":557,"end_character":77},"in_reply_to":"5c6d721e_28a5da89","updated":"2021-02-25 14:27:35.000000000","message":"hahahah agree","commit_id":"2b0c9946f15b45fa9be0f9e76b6a9afc10655ac6"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"3e7bac4965e351276a23a14b5414da82347d7bd3","unresolved":true,"context_lines":[{"line_number":557,"context_line":"                    interface_name, namespace\u003dns_name, link_up\u003dlink_up) and \\"},{"line_number":558,"context_line":"                    link_up:"},{"line_number":559,"context_line":"                LOG.warning(\u0027Gateway interface for router %s was not set up; \u0027"},{"line_number":560,"context_line":"                            \u0027router will not work properly\u0027, self.router_id)"},{"line_number":561,"context_line":"            if link_up and set_gw:"},{"line_number":562,"context_line":"                preserve_ips \u003d self.get_router_preserve_ips()"},{"line_number":563,"context_line":"                self._external_gateway_settings(ex_gw_port, interface_name,"}],"source_content_type":"text/x-python","patch_set":4,"id":"4848ca09_1063ec11","line":560,"range":{"start_line":560,"start_character":29,"end_line":560,"end_character":58},"updated":"2021-02-24 08:24:50.000000000","message":"should it be error log then?","commit_id":"2b0c9946f15b45fa9be0f9e76b6a9afc10655ac6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c9679ee2bef6c5120f38bb90665d530cfe6a953b","unresolved":true,"context_lines":[{"line_number":557,"context_line":"                    interface_name, namespace\u003dns_name, link_up\u003dlink_up) and \\"},{"line_number":558,"context_line":"                    link_up:"},{"line_number":559,"context_line":"                LOG.warning(\u0027Gateway interface for router %s was not set up; \u0027"},{"line_number":560,"context_line":"                            \u0027router will not work properly\u0027, self.router_id)"},{"line_number":561,"context_line":"            if link_up and set_gw:"},{"line_number":562,"context_line":"                preserve_ips \u003d self.get_router_preserve_ips()"},{"line_number":563,"context_line":"                self._external_gateway_settings(ex_gw_port, interface_name,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fc724984_d0663584","line":560,"range":{"start_line":560,"start_character":29,"end_line":560,"end_character":58},"in_reply_to":"4848ca09_1063ec11","updated":"2021-02-25 14:27:35.000000000","message":"Yes, should be. If the router has been deleted concurrently, this error message won\u0027t matter, but if we hit again the related bug, this will affect to the router (the router won\u0027t work at all). This is indeed an error.","commit_id":"2b0c9946f15b45fa9be0f9e76b6a9afc10655ac6"}],"neutron/agent/linux/interface.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"27bf9136d21d763579febf28205f906a98298c4d","unresolved":true,"context_lines":[{"line_number":321,"context_line":"            self._mtu_update_warn_logged \u003d True"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    def set_link_status(self, device_name, router_id, namespace\u003dNone,"},{"line_number":324,"context_line":"                        link_up\u003dTrue):"},{"line_number":325,"context_line":"        ns_dev \u003d ip_lib.IPWrapper(namespace\u003dnamespace).device(device_name)"},{"line_number":326,"context_line":"        try:"},{"line_number":327,"context_line":"            utils.wait_until_true(ns_dev.exists, timeout\u003d3)"}],"source_content_type":"text/x-python","patch_set":1,"id":"2d49e6f6_6b87705f","line":324,"updated":"2021-02-18 16:24:21.000000000","message":"So this is only called from the L3-HA code according to codesearch, but it seems generic enough that we shouldn\u0027t be adding a required argument like a router ID to it.","commit_id":"c447dbc21cdacdcc4ae7a6382d82b5f502ff58fd"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5fa0087ec6aaabf1a70a551585517cd6ebcd6595","unresolved":true,"context_lines":[{"line_number":321,"context_line":"            self._mtu_update_warn_logged \u003d True"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    def set_link_status(self, device_name, router_id, namespace\u003dNone,"},{"line_number":324,"context_line":"                        link_up\u003dTrue):"},{"line_number":325,"context_line":"        ns_dev \u003d ip_lib.IPWrapper(namespace\u003dnamespace).device(device_name)"},{"line_number":326,"context_line":"        try:"},{"line_number":327,"context_line":"            utils.wait_until_true(ns_dev.exists, timeout\u003d3)"}],"source_content_type":"text/x-python","patch_set":1,"id":"292a0dc1_dc23a347","line":324,"in_reply_to":"22c81249_895644a2","updated":"2021-02-19 09:21:39.000000000","message":"Right, this is just for a linux interface. The extra logging should be done in the caller.","commit_id":"c447dbc21cdacdcc4ae7a6382d82b5f502ff58fd"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"d46e77e7762e434c9a52d3929c0e4a1c563481fe","unresolved":true,"context_lines":[{"line_number":321,"context_line":"            self._mtu_update_warn_logged \u003d True"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    def set_link_status(self, device_name, router_id, namespace\u003dNone,"},{"line_number":324,"context_line":"                        link_up\u003dTrue):"},{"line_number":325,"context_line":"        ns_dev \u003d ip_lib.IPWrapper(namespace\u003dnamespace).device(device_name)"},{"line_number":326,"context_line":"        try:"},{"line_number":327,"context_line":"            utils.wait_until_true(ns_dev.exists, timeout\u003d3)"}],"source_content_type":"text/x-python","patch_set":1,"id":"22c81249_895644a2","line":324,"in_reply_to":"2d49e6f6_6b87705f","updated":"2021-02-19 07:59:51.000000000","message":"+1","commit_id":"c447dbc21cdacdcc4ae7a6382d82b5f502ff58fd"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"27bf9136d21d763579febf28205f906a98298c4d","unresolved":true,"context_lines":[{"line_number":327,"context_line":"            utils.wait_until_true(ns_dev.exists, timeout\u003d3)"},{"line_number":328,"context_line":"        except utils.WaitTimeout:"},{"line_number":329,"context_line":"            if link_up:"},{"line_number":330,"context_line":"                LOG.warning(\u0027Device %s may concurrently be deleted; if this \u0027"},{"line_number":331,"context_line":"                            \u0027is not the case, router %s will not work \u0027"},{"line_number":332,"context_line":"                            \u0027properly\u0027, device_name, router_id)"},{"line_number":333,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad5d922_eaa47c18","line":330,"range":{"start_line":330,"start_character":39,"end_line":330,"end_character":66},"updated":"2021-02-18 16:24:21.000000000","message":"s/may have been deleted concurrently\n\nsince you\u0027re updating the code\n\nsame below","commit_id":"c447dbc21cdacdcc4ae7a6382d82b5f502ff58fd"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5fa0087ec6aaabf1a70a551585517cd6ebcd6595","unresolved":false,"context_lines":[{"line_number":327,"context_line":"            utils.wait_until_true(ns_dev.exists, timeout\u003d3)"},{"line_number":328,"context_line":"        except utils.WaitTimeout:"},{"line_number":329,"context_line":"            if link_up:"},{"line_number":330,"context_line":"                LOG.warning(\u0027Device %s may concurrently be deleted; if this \u0027"},{"line_number":331,"context_line":"                            \u0027is not the case, router %s will not work \u0027"},{"line_number":332,"context_line":"                            \u0027properly\u0027, device_name, router_id)"},{"line_number":333,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"196fcf48_3579194d","line":330,"range":{"start_line":330,"start_character":39,"end_line":330,"end_character":66},"in_reply_to":"9ad5d922_eaa47c18","updated":"2021-02-19 09:21:39.000000000","message":"Done","commit_id":"c447dbc21cdacdcc4ae7a6382d82b5f502ff58fd"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"54c6e265ac82c7473dc3739ec080ffcd8bdd22eb","unresolved":true,"context_lines":[{"line_number":325,"context_line":"        try:"},{"line_number":326,"context_line":"            utils.wait_until_true(ns_dev.exists, timeout\u003d3)"},{"line_number":327,"context_line":"        except utils.WaitTimeout:"},{"line_number":328,"context_line":"            LOG.info(\u0027Device %s may have been deleted concurrently\u0027,"},{"line_number":329,"context_line":"                     device_name)"},{"line_number":330,"context_line":"            return False"},{"line_number":331,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"a00619bf_940a569b","line":328,"range":{"start_line":328,"start_character":16,"end_line":328,"end_character":20},"updated":"2021-02-24 14:37:45.000000000","message":"Wonder if this should stay at debug, since in the down case it\u0027s a non-event","commit_id":"2b0c9946f15b45fa9be0f9e76b6a9afc10655ac6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c9679ee2bef6c5120f38bb90665d530cfe6a953b","unresolved":true,"context_lines":[{"line_number":325,"context_line":"        try:"},{"line_number":326,"context_line":"            utils.wait_until_true(ns_dev.exists, timeout\u003d3)"},{"line_number":327,"context_line":"        except utils.WaitTimeout:"},{"line_number":328,"context_line":"            LOG.info(\u0027Device %s may have been deleted concurrently\u0027,"},{"line_number":329,"context_line":"                     device_name)"},{"line_number":330,"context_line":"            return False"},{"line_number":331,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"f9969ba7_1917596c","line":328,"range":{"start_line":328,"start_character":16,"end_line":328,"end_character":20},"in_reply_to":"a00619bf_940a569b","updated":"2021-02-25 14:27:35.000000000","message":"Yeah, that could be better as a debug message.","commit_id":"2b0c9946f15b45fa9be0f9e76b6a9afc10655ac6"}]}
