)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2733,"name":"Darragh O\u0027Reilly","email":"doreilly@suse.com","username":"darragh-oreilly"},"change_message_id":"7e06d7fef78d781f997cb73c2a1d7c79b0a35159","unresolved":false,"context_lines":[{"line_number":20,"context_line":"neutron-ovs-agent introduces a short interrupt of vlan traffic\""},{"line_number":21,"context_line":"The fix for this bug was to remove the installation of the drop flows"},{"line_number":22,"context_line":"both in br-int and br-phys\u003cx\u003e, if DVR was configured. Patch: [1]"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"- https://bugs.launchpad.net/neutron/+bug/1887148: \"Network loop between"},{"line_number":25,"context_line":"physical networks with DVR\". Because of the previous LP fix [1], we can"},{"line_number":26,"context_line":"get into the following situation if those conditions are met:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bf51134e_3399741e","line":23,"updated":"2020-07-16 13:59:13.000000000","message":"That fix should not have removed adding the drop flow to br-int.","commit_id":"875dad2d5c4633eb4f38d8ed48d9bfd88541750a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"0510f6ffa1d92e1bc2645a0124fbce8a43c58092","unresolved":false,"context_lines":[{"line_number":20,"context_line":"neutron-ovs-agent introduces a short interrupt of vlan traffic\""},{"line_number":21,"context_line":"The fix for this bug was to remove the installation of the drop flows"},{"line_number":22,"context_line":"both in br-int and br-phys\u003cx\u003e, if DVR was configured. Patch: [1]"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"- https://bugs.launchpad.net/neutron/+bug/1887148: \"Network loop between"},{"line_number":25,"context_line":"physical networks with DVR\". Because of the previous LP fix [1], we can"},{"line_number":26,"context_line":"get into the following situation if those conditions are met:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bf51134e_25180bd1","line":23,"in_reply_to":"bf51134e_3399741e","updated":"2020-07-16 14:27:47.000000000","message":"well, this happens, is not easy to consider all type of deployments","commit_id":"875dad2d5c4633eb4f38d8ed48d9bfd88541750a"},{"author":{"_account_id":2733,"name":"Darragh O\u0027Reilly","email":"doreilly@suse.com","username":"darragh-oreilly"},"change_message_id":"7e06d7fef78d781f997cb73c2a1d7c79b0a35159","unresolved":false,"context_lines":[{"line_number":25,"context_line":"physical networks with DVR\". Because of the previous LP fix [1], we can"},{"line_number":26,"context_line":"get into the following situation if those conditions are met:"},{"line_number":27,"context_line":"  * Both the OVS agent and the server are stopped."},{"line_number":28,"context_line":"  * The physical bridge rules are deleted manually (this is not done by"},{"line_number":29,"context_line":"    any OpenStack service)."},{"line_number":30,"context_line":"  * The OVS agent is then restarted (with DVR and the Neutron server down)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"A default \"NORMAL\" flow rule in the physical bridges is written"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bf51134e_73b80c74","line":29,"range":{"start_line":28,"start_character":2,"end_line":29,"end_character":27},"updated":"2020-07-16 13:59:13.000000000","message":"No - nowhere in the bug report does it say this.","commit_id":"875dad2d5c4633eb4f38d8ed48d9bfd88541750a"},{"author":{"_account_id":2733,"name":"Darragh O\u0027Reilly","email":"doreilly@suse.com","username":"darragh-oreilly"},"change_message_id":"ee7caf802059d671155082e2e7e8f239e9f50e03","unresolved":false,"context_lines":[{"line_number":25,"context_line":"physical networks with DVR\". Because of the previous LP fix [1], we can"},{"line_number":26,"context_line":"get into the following situation if those conditions are met:"},{"line_number":27,"context_line":"  * Both the OVS agent and the server are stopped."},{"line_number":28,"context_line":"  * The physical bridge rules are deleted manually (this is not done by"},{"line_number":29,"context_line":"    any OpenStack service)."},{"line_number":30,"context_line":"  * The OVS agent is then restarted (with DVR and the Neutron server down)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"A default \"NORMAL\" flow rule in the physical bridges is written"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bf51134e_e86eea29","line":29,"range":{"start_line":28,"start_character":2,"end_line":29,"end_character":27},"in_reply_to":"bf51134e_250acb88","updated":"2020-07-16 16:00:20.000000000","message":"ah okay, this is to create the situation that would exist after the node was booted and br-int having no flows.","commit_id":"875dad2d5c4633eb4f38d8ed48d9bfd88541750a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"0510f6ffa1d92e1bc2645a0124fbce8a43c58092","unresolved":false,"context_lines":[{"line_number":25,"context_line":"physical networks with DVR\". Because of the previous LP fix [1], we can"},{"line_number":26,"context_line":"get into the following situation if those conditions are met:"},{"line_number":27,"context_line":"  * Both the OVS agent and the server are stopped."},{"line_number":28,"context_line":"  * The physical bridge rules are deleted manually (this is not done by"},{"line_number":29,"context_line":"    any OpenStack service)."},{"line_number":30,"context_line":"  * The OVS agent is then restarted (with DVR and the Neutron server down)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"A default \"NORMAL\" flow rule in the physical bridges is written"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bf51134e_250acb88","line":29,"range":{"start_line":28,"start_character":2,"end_line":29,"end_character":27},"in_reply_to":"bf51134e_73b80c74","updated":"2020-07-16 14:27:47.000000000","message":"It does, between stopping the agent and the server, and restarting the agent:\n\n# clear all flows\nfor BR in $(sudo ovs-vsctl list-br); do echo $BR; sudo ovs-ofctl del-flows $BR; done","commit_id":"875dad2d5c4633eb4f38d8ed48d9bfd88541750a"}],"neutron/plugins/ml2/drivers/openvswitch/agent/ovs_dvr_neutron_agent.py":[{"author":{"_account_id":29071,"name":"norman shen","email":"yshxxsjt715@gmail.com","username":"ushen"},"change_message_id":"33d63df0b60481e8c12d3ac3e641f249211db825","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        for physical_network in bridge_mappings:"},{"line_number":256,"context_line":"            self.phys_brs[physical_network].install_goto("},{"line_number":257,"context_line":"                in_port\u003dself.phys_ofports[physical_network],"},{"line_number":258,"context_line":"                priority\u003d3,"},{"line_number":259,"context_line":"                dest_table_id\u003dconstants.DVR_PROCESS_PHYSICAL)"},{"line_number":260,"context_line":"            self.phys_brs[physical_network].install_goto("},{"line_number":261,"context_line":"                priority\u003d1,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_88fdae6f","line":258,"range":{"start_line":258,"start_character":0,"end_line":258,"end_character":27},"updated":"2020-07-16 15:04:12.000000000","message":"only increase this priority imo is not enough...","commit_id":"a0b1ce5d7d1753f763406d61def7ebbc555690ad"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"d138014ae2cdad14c1e0295c6f374396ad8e1220","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        for physical_network in bridge_mappings:"},{"line_number":256,"context_line":"            self.phys_brs[physical_network].install_goto("},{"line_number":257,"context_line":"                in_port\u003dself.phys_ofports[physical_network],"},{"line_number":258,"context_line":"                priority\u003d3,"},{"line_number":259,"context_line":"                dest_table_id\u003dconstants.DVR_PROCESS_PHYSICAL)"},{"line_number":260,"context_line":"            self.phys_brs[physical_network].install_goto("},{"line_number":261,"context_line":"                priority\u003d1,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_bb41da3b","line":258,"range":{"start_line":258,"start_character":0,"end_line":258,"end_character":27},"in_reply_to":"bf51134e_88fdae6f","updated":"2020-07-16 15:38:22.000000000","message":"Please, justify this statement.","commit_id":"a0b1ce5d7d1753f763406d61def7ebbc555690ad"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"0988882c0ce8faae22ebe47636cf4a56b66330e1","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        for physical_network in bridge_mappings:"},{"line_number":256,"context_line":"            self.phys_brs[physical_network].install_goto("},{"line_number":257,"context_line":"                in_port\u003dself.phys_ofports[physical_network],"},{"line_number":258,"context_line":"                priority\u003d3,"},{"line_number":259,"context_line":"                dest_table_id\u003dconstants.DVR_PROCESS_PHYSICAL)"},{"line_number":260,"context_line":"            self.phys_brs[physical_network].install_goto("},{"line_number":261,"context_line":"                priority\u003d1,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_c7e30806","line":258,"range":{"start_line":258,"start_character":0,"end_line":258,"end_character":27},"in_reply_to":"bf51134e_bb41da3b","updated":"2020-07-17 08:06:24.000000000","message":"@LIU, according to [1], I increased the priority. I think you are right, this is the correct way of solving this problem (and all related in the commit message).\n\n[1]https://review.opendev.org/#/c/733568/5/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_dvr_neutron_agent.py@248","commit_id":"a0b1ce5d7d1753f763406d61def7ebbc555690ad"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"dd8954310d3c818cf5edbe28e92f0622b996b21f","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        for physical_network in bridge_mappings:"},{"line_number":256,"context_line":"            self.phys_brs[physical_network].install_goto("},{"line_number":257,"context_line":"                in_port\u003dself.phys_ofports[physical_network],"},{"line_number":258,"context_line":"                priority\u003d3,"},{"line_number":259,"context_line":"                dest_table_id\u003dconstants.DVR_PROCESS_PHYSICAL)"},{"line_number":260,"context_line":"            self.phys_brs[physical_network].install_goto("},{"line_number":261,"context_line":"                priority\u003d1,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_e749ecb7","line":258,"range":{"start_line":258,"start_character":0,"end_line":258,"end_character":27},"in_reply_to":"bf51134e_c7e30806","updated":"2020-07-17 08:40:24.000000000","message":"Sure, I will verify this locally.","commit_id":"a0b1ce5d7d1753f763406d61def7ebbc555690ad"}],"neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py":[{"author":{"_account_id":2733,"name":"Darragh O\u0027Reilly","email":"doreilly@suse.com","username":"darragh-oreilly"},"change_message_id":"7e06d7fef78d781f997cb73c2a1d7c79b0a35159","unresolved":false,"context_lines":[{"line_number":1552,"context_line":"            self.phys_ofports[physical_network] \u003d phys_ofport"},{"line_number":1553,"context_line":""},{"line_number":1554,"context_line":"            # These two drop flows are the root cause for the bug #1803919."},{"line_number":1555,"context_line":"            # And now we add a rpc check during agent start procedure. If"},{"line_number":1556,"context_line":"            # ovs agent can not reach any neutron server, or all neutron"},{"line_number":1557,"context_line":"            # servers are down, these flows will not be installed anymore."},{"line_number":1558,"context_line":"            # Bug #1803919 was fixed in that way."},{"line_number":1559,"context_line":"            # And as a reminder, we can not do much work on this. Because"},{"line_number":1560,"context_line":"            # the bridge mappings can be varied. Provider (external) network"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_454edf6e","line":1557,"range":{"start_line":1555,"start_character":12,"end_line":1557,"end_character":74},"updated":"2020-07-16 13:59:13.000000000","message":"I don\u0027t think this comment it true anymore.","commit_id":"875dad2d5c4633eb4f38d8ed48d9bfd88541750a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"0510f6ffa1d92e1bc2645a0124fbce8a43c58092","unresolved":false,"context_lines":[{"line_number":1552,"context_line":"            self.phys_ofports[physical_network] \u003d phys_ofport"},{"line_number":1553,"context_line":""},{"line_number":1554,"context_line":"            # These two drop flows are the root cause for the bug #1803919."},{"line_number":1555,"context_line":"            # And now we add a rpc check during agent start procedure. If"},{"line_number":1556,"context_line":"            # ovs agent can not reach any neutron server, or all neutron"},{"line_number":1557,"context_line":"            # servers are down, these flows will not be installed anymore."},{"line_number":1558,"context_line":"            # Bug #1803919 was fixed in that way."},{"line_number":1559,"context_line":"            # And as a reminder, we can not do much work on this. Because"},{"line_number":1560,"context_line":"            # the bridge mappings can be varied. Provider (external) network"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_051fc7b6","line":1557,"range":{"start_line":1555,"start_character":12,"end_line":1557,"end_character":74},"in_reply_to":"bf51134e_454edf6e","updated":"2020-07-16 14:27:47.000000000","message":"right, those flows will be always written during the initialization","commit_id":"875dad2d5c4633eb4f38d8ed48d9bfd88541750a"},{"author":{"_account_id":2733,"name":"Darragh O\u0027Reilly","email":"doreilly@suse.com","username":"darragh-oreilly"},"change_message_id":"7e06d7fef78d781f997cb73c2a1d7c79b0a35159","unresolved":false,"context_lines":[{"line_number":1563,"context_line":"            # bridge map settings, these tenant network traffic can also be"},{"line_number":1564,"context_line":"            # blocked by the following drop flows."},{"line_number":1565,"context_line":"            # block all untranslated traffic between bridges"},{"line_number":1566,"context_line":"            self.int_br.drop_port(in_port\u003dint_ofport)"},{"line_number":1567,"context_line":"            br.drop_port(in_port\u003dphys_ofport)"},{"line_number":1568,"context_line":""},{"line_number":1569,"context_line":"            if self.use_veth_interconnection:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_25512b0f","line":1566,"updated":"2020-07-16 13:59:13.000000000","message":"good - this needs be done for dvr and non-dvr","commit_id":"875dad2d5c4633eb4f38d8ed48d9bfd88541750a"},{"author":{"_account_id":2733,"name":"Darragh O\u0027Reilly","email":"doreilly@suse.com","username":"darragh-oreilly"},"change_message_id":"7e06d7fef78d781f997cb73c2a1d7c79b0a35159","unresolved":false,"context_lines":[{"line_number":1564,"context_line":"            # blocked by the following drop flows."},{"line_number":1565,"context_line":"            # block all untranslated traffic between bridges"},{"line_number":1566,"context_line":"            self.int_br.drop_port(in_port\u003dint_ofport)"},{"line_number":1567,"context_line":"            br.drop_port(in_port\u003dphys_ofport)"},{"line_number":1568,"context_line":""},{"line_number":1569,"context_line":"            if self.use_veth_interconnection:"},{"line_number":1570,"context_line":"                # enable veth to pass traffic"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_c5414f3b","line":1567,"updated":"2020-07-16 13:59:13.000000000","message":"only needed for non-dvr","commit_id":"875dad2d5c4633eb4f38d8ed48d9bfd88541750a"},{"author":{"_account_id":2733,"name":"Darragh O\u0027Reilly","email":"doreilly@suse.com","username":"darragh-oreilly"},"change_message_id":"ef10c46fac2fa4b9117bb714f3a9425abe79ff45","unresolved":false,"context_lines":[{"line_number":1564,"context_line":"            # blocked by the following drop flows."},{"line_number":1565,"context_line":"            # block all untranslated traffic between bridges"},{"line_number":1566,"context_line":"            self.int_br.drop_port(in_port\u003dint_ofport)"},{"line_number":1567,"context_line":"            br.drop_port(in_port\u003dphys_ofport)"},{"line_number":1568,"context_line":""},{"line_number":1569,"context_line":"            if self.use_veth_interconnection:"},{"line_number":1570,"context_line":"                # enable veth to pass traffic"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_7e9c500d","line":1567,"in_reply_to":"bf51134e_3bf14a6c","updated":"2020-07-16 17:22:26.000000000","message":"The commit message is very long and I\u0027m unable to find the answer. Which part is the answer in?\n\nHopefully I\u0027ll get time to test tomorrow.","commit_id":"875dad2d5c4633eb4f38d8ed48d9bfd88541750a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"fca34dfdbaba5fb17a18907217cdd2464ca87e1c","unresolved":false,"context_lines":[{"line_number":1564,"context_line":"            # blocked by the following drop flows."},{"line_number":1565,"context_line":"            # block all untranslated traffic between bridges"},{"line_number":1566,"context_line":"            self.int_br.drop_port(in_port\u003dint_ofport)"},{"line_number":1567,"context_line":"            br.drop_port(in_port\u003dphys_ofport)"},{"line_number":1568,"context_line":""},{"line_number":1569,"context_line":"            if self.use_veth_interconnection:"},{"line_number":1570,"context_line":"                # enable veth to pass traffic"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_e74e0c37","line":1567,"in_reply_to":"bf51134e_7e9c500d","updated":"2020-07-17 07:51:54.000000000","message":"Apart from the commit message, I was talking about the answer to norman. I\u0027ll copy it here:\n\nThis patch provides solution for all those scenarios:\n\n- Not DVR, existing flows in both bridges. The initialization won\u0027t affect the current traffic.\n- DVR, existing flows in both bridges. The drop flow in phy-br, in table 0 with prio 2 won\u0027t overwrite the existing DVR flow (prio 3), to submit the traffic to table 1\n- Not DVR, flows cleaned. The drop flows will prevent the traffic between both bridge types (integration and physical bridges)\n- DVR, flows cleaned. The OVSDVRNeutronAgent.setup_dvr_flows_on_phys_br will install the default flows for DVR in the physical bridge. Until the OVS does not start configuring the VLANs, the flows in the physical bridge will block any traffic [1]","commit_id":"875dad2d5c4633eb4f38d8ed48d9bfd88541750a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"fbba872f3c1b92c01c817bf0ed54625130cb6b48","unresolved":false,"context_lines":[{"line_number":1564,"context_line":"            # blocked by the following drop flows."},{"line_number":1565,"context_line":"            # block all untranslated traffic between bridges"},{"line_number":1566,"context_line":"            self.int_br.drop_port(in_port\u003dint_ofport)"},{"line_number":1567,"context_line":"            br.drop_port(in_port\u003dphys_ofport)"},{"line_number":1568,"context_line":""},{"line_number":1569,"context_line":"            if self.use_veth_interconnection:"},{"line_number":1570,"context_line":"                # enable veth to pass traffic"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_3bf14a6c","line":1567,"in_reply_to":"bf51134e_a8d6b2c1","updated":"2020-07-16 16:08:15.000000000","message":"Please, read the commit message and the answer to norman. There you can find the explanation.\n\nIf you need further information, don\u0027t hesitate to ping me here or in IRC (#openstack-neutron, @ralonsoh)\n\nBTW, can you try this patch in your env? Thanks!","commit_id":"875dad2d5c4633eb4f38d8ed48d9bfd88541750a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"0510f6ffa1d92e1bc2645a0124fbce8a43c58092","unresolved":false,"context_lines":[{"line_number":1564,"context_line":"            # blocked by the following drop flows."},{"line_number":1565,"context_line":"            # block all untranslated traffic between bridges"},{"line_number":1566,"context_line":"            self.int_br.drop_port(in_port\u003dint_ofport)"},{"line_number":1567,"context_line":"            br.drop_port(in_port\u003dphys_ofport)"},{"line_number":1568,"context_line":""},{"line_number":1569,"context_line":"            if self.use_veth_interconnection:"},{"line_number":1570,"context_line":"                # enable veth to pass traffic"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_c56dcf32","line":1567,"in_reply_to":"bf51134e_c5414f3b","updated":"2020-07-16 14:27:47.000000000","message":"This is the key point of this patch. We can install this flow with DVR because the priority (2) is lower than the DVR flow priority (3) installed in the local switch table, to send the traffic to table 1.","commit_id":"875dad2d5c4633eb4f38d8ed48d9bfd88541750a"},{"author":{"_account_id":2733,"name":"Darragh O\u0027Reilly","email":"doreilly@suse.com","username":"darragh-oreilly"},"change_message_id":"ee7caf802059d671155082e2e7e8f239e9f50e03","unresolved":false,"context_lines":[{"line_number":1564,"context_line":"            # blocked by the following drop flows."},{"line_number":1565,"context_line":"            # block all untranslated traffic between bridges"},{"line_number":1566,"context_line":"            self.int_br.drop_port(in_port\u003dint_ofport)"},{"line_number":1567,"context_line":"            br.drop_port(in_port\u003dphys_ofport)"},{"line_number":1568,"context_line":""},{"line_number":1569,"context_line":"            if self.use_veth_interconnection:"},{"line_number":1570,"context_line":"                # enable veth to pass traffic"}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_a8d6b2c1","line":1567,"in_reply_to":"bf51134e_c56dcf32","updated":"2020-07-16 16:00:20.000000000","message":"Okay, I understand, and it\u0027s fine. But with regards to this flow on br-phys, this commit just changes things around a bit, but does it fix any outstanding problem?","commit_id":"875dad2d5c4633eb4f38d8ed48d9bfd88541750a"}]}
