)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"0a22b04f89b4c4b23a45724b3ab0ace7df6a3fc3","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"if we get a new chassis (or a chassis gets a new physnet) we should"},{"line_number":10,"context_line":"reschedule other routers to have some of their lower priorities using"},{"line_number":11,"context_line":"this chassis. We do not reschedule the highest priority chassis, since"},{"line_number":12,"context_line":"that would cause a traffic interruption. However we reschedule prioritiy"},{"line_number":13,"context_line":"1 to 4 of all lrps using that physnet."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"If then an other chassis providing this physnet is stopped then the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"c15ee2d9_07d7f991","line":12,"range":{"start_line":11,"start_character":14,"end_line":12,"end_character":39},"updated":"2023-09-15 16:56:49.000000000","message":"Very important, for sure. Please, it is essential to prevent this. Add testing to ensure we don\u0027t have a regression. (I really don\u0027t want any user to, by accident, have the highest prio GW LRP changed!!)","commit_id":"9bbf14dcabf1d19f9debb6d100b21491e48493d5"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"798c84ac8e45e4dea934c89210bc76632366ece1","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"if we get a new chassis (or a chassis gets a new physnet) we should"},{"line_number":10,"context_line":"reschedule other routers to have some of their lower priorities using"},{"line_number":11,"context_line":"this chassis. We do not reschedule the highest priority chassis, since"},{"line_number":12,"context_line":"that would cause a traffic interruption. However we reschedule prioritiy"},{"line_number":13,"context_line":"1 to 4 of all lrps using that physnet."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"If then an other chassis providing this physnet is stopped then the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"e72f03e8_b0306d7d","line":12,"range":{"start_line":11,"start_character":14,"end_line":12,"end_character":39},"in_reply_to":"2317036e_5d590c98","updated":"2023-09-21 14:38:37.000000000","message":"This is not what you are stating in this reply: https://review.opendev.org/c/openstack/neutron/+/893655/comment/9d9dc3fc_076fa38e/","commit_id":"9bbf14dcabf1d19f9debb6d100b21491e48493d5"},{"author":{"_account_id":29074,"name":"Felix Huettner","email":"felix.huettner@digits.schwarz","username":"felix.huettner"},"change_message_id":"01bbc9c147fb2e441923f7e99e447eff5db723ab","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"if we get a new chassis (or a chassis gets a new physnet) we should"},{"line_number":10,"context_line":"reschedule other routers to have some of their lower priorities using"},{"line_number":11,"context_line":"this chassis. We do not reschedule the highest priority chassis, since"},{"line_number":12,"context_line":"that would cause a traffic interruption. However we reschedule prioritiy"},{"line_number":13,"context_line":"1 to 4 of all lrps using that physnet."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"If then an other chassis providing this physnet is stopped then the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"2317036e_5d590c98","line":12,"range":{"start_line":11,"start_character":14,"end_line":12,"end_character":39},"in_reply_to":"c15ee2d9_07d7f991","updated":"2023-09-18 09:37:59.000000000","message":"Thanks i added a test for that","commit_id":"9bbf14dcabf1d19f9debb6d100b21491e48493d5"},{"author":{"_account_id":29074,"name":"Felix Huettner","email":"felix.huettner@digits.schwarz","username":"felix.huettner"},"change_message_id":"be6f9db401c98801291c5d8d2ac38aaa41056e2e","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"if we get a new chassis (or a chassis gets a new physnet) we should"},{"line_number":10,"context_line":"reschedule other routers to have some of their lower priorities using"},{"line_number":11,"context_line":"this chassis. We do not reschedule the highest priority chassis, since"},{"line_number":12,"context_line":"that would cause a traffic interruption. However we reschedule prioritiy"},{"line_number":13,"context_line":"1 to 4 of all lrps using that physnet."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"If then an other chassis providing this physnet is stopped then the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"20affa22_6111a444","line":12,"range":{"start_line":11,"start_character":14,"end_line":12,"end_character":39},"in_reply_to":"e72f03e8_b0306d7d","updated":"2023-10-02 11:13:03.000000000","message":"It is what i stated in the reply. The `primary` (from the l3 plugin code) \u003d\u003d the chassis with the highest priority is never changed.\n\nHowever there is the following race condition where there is nothing we can do against:\n1. Assume lrp1 is scheduled on n1 with prio 3, n2 with prio 2 and n3 with prio 1\n2. Assume a new chassis n4 is added with appropriate physnets available\n3. Assume after that, but before neutron handles any events n1 goes down. OVN handles the failover, so n2 is now actually serving the traffic\n4. Neutron will now first handle the new chassis n4. It might therefor change the chassis of lrp1 like: n1 with prio 3, n4 with prio 2, n3 with prio 1 (note that it can here not remove n1 from the list, because it did not yet receive and handle the event). This will cause a failover, since n2 is now out of the chassis list\n5. Neutron handles the removal of chassis n1. It might then change lrp1 like n4 with prio 3, n3 with prio 2, n2 with prio 1\n\nIf this race condidtion triggers than we would have an additional failover, but i guess this case is quite hard to hit from a timing perspective.","commit_id":"9bbf14dcabf1d19f9debb6d100b21491e48493d5"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9ad8609888ef919b65cc643ac7e7dfb41d1e2100","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"7267e2aa_fed4700f","updated":"2023-09-08 09:53:51.000000000","message":"-1 for the question","commit_id":"b28f07a379f46f6386b80206ec0d6155ffe14ec8"},{"author":{"_account_id":29074,"name":"Felix Huettner","email":"felix.huettner@digits.schwarz","username":"felix.huettner"},"change_message_id":"a6c63d32ed7aa1a5ee08ea0cee21f0b31fe07b5a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"3b165a81_65ad0719","updated":"2023-09-11 09:47:12.000000000","message":"recheck: ci timeouts","commit_id":"8b82d497ada50fa001c2d0da04e189bec6af53b9"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"798c84ac8e45e4dea934c89210bc76632366ece1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"98f2f9b4_9be9724b","updated":"2023-09-21 14:38:37.000000000","message":"Please confirm what you are stating in the commit message. According to the tests, if a new chassis is added, the LRP won\u0027t update its first GW chassis (so there won\u0027t be traffic disruption). But this is not what you are stating in https://review.opendev.org/c/openstack/neutron/+/893655/comment/9d9dc3fc_076fa38e/","commit_id":"1f3807adf36e4b4b0a36603eb329b2d4d6723e7c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3a7a7309846b3cffb07ec35fd16b61756b07cbf3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"720c6946_8fec43e9","updated":"2024-06-03 19:20:24.000000000","message":"Looks like this needs a rebase","commit_id":"cb5427a42e7f42754ce075f2e9d5cbc58577bfd1"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovsdb_monitor.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6caa977645e538fd6e65367a5d478d90614490a3","unresolved":true,"context_lines":[{"line_number":241,"context_line":"                    self.l3_plugin.reschedule_for_new_chassis(row.name)"},{"line_number":242,"context_line":"            elif event \u003d\u003d self.ROW_CREATE:"},{"line_number":243,"context_line":"                self.l3_plugin.reschedule_for_new_chassis(row.name)"},{"line_number":244,"context_line":"            self.l3_plugin.schedule_unhosted_gateways(**kwargs)"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        self.handle_ha_chassis_group_changes(event, row, old)"},{"line_number":247,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"847ff21b_32cdcd5d","line":244,"range":{"start_line":244,"start_character":12,"end_line":244,"end_character":63},"updated":"2024-01-30 06:53:21.000000000","message":"If we have this call here, won\u0027t the \"schedule_unhosted_gateways\", since your previous patch [1] do the same here? When we call \"schedule_unhosted_gateways\", we\u0027ll consider this new added chassis and we\u0027ll rebalance all LRPs.\n\n[1]https://review.opendev.org/c/openstack/neutron/+/893654/11/neutron/services/ovn_l3/plugin.py","commit_id":"cb5427a42e7f42754ce075f2e9d5cbc58577bfd1"},{"author":{"_account_id":29074,"name":"Felix Huettner","email":"felix.huettner@digits.schwarz","username":"felix.huettner"},"change_message_id":"7e843e8e5a1729795f852354dbbdd1128a62a4f2","unresolved":true,"context_lines":[{"line_number":241,"context_line":"                    self.l3_plugin.reschedule_for_new_chassis(row.name)"},{"line_number":242,"context_line":"            elif event \u003d\u003d self.ROW_CREATE:"},{"line_number":243,"context_line":"                self.l3_plugin.reschedule_for_new_chassis(row.name)"},{"line_number":244,"context_line":"            self.l3_plugin.schedule_unhosted_gateways(**kwargs)"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        self.handle_ha_chassis_group_changes(event, row, old)"},{"line_number":247,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"bcf31b18_beece938","line":244,"range":{"start_line":244,"start_character":12,"end_line":244,"end_character":63},"in_reply_to":"847ff21b_32cdcd5d","updated":"2024-01-30 08:12:33.000000000","message":"no because it will only consider all prios \u003c\u003d the one of the changed chassis.\nBut this would not actually help, since the new chassis is not actually in the prio list at all.\n\nThe idea here is that we basically remove all prios besides the highest one and allocate them completely new. This allows the new chassis not be part of all non-active priorities directly when it joins.\nIn turn this ensures that future failovers will then also go to the new chassis.","commit_id":"cb5427a42e7f42754ce075f2e9d5cbc58577bfd1"}],"neutron/services/ovn_l3/plugin.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9ad8609888ef919b65cc643ac7e7dfb41d1e2100","unresolved":true,"context_lines":[{"line_number":446,"context_line":"            az_hints \u003d self._nb_ovn.get_gateway_chassis_az_hints(g_name)"},{"line_number":447,"context_line":"            filtered_existing_chassis \u003d []"},{"line_number":448,"context_line":"            if reschedule_all_prios:"},{"line_number":449,"context_line":"                filtered_existing_chassis \u003d [primary]"},{"line_number":450,"context_line":"            else:"},{"line_number":451,"context_line":"                filtered_existing_chassis \u003d \\"},{"line_number":452,"context_line":"                    self.scheduler.filter_existing_chassis("}],"source_content_type":"text/x-python","patch_set":4,"id":"9d9dc3fc_076fa38e","line":449,"range":{"start_line":449,"start_character":16,"end_line":449,"end_character":53},"updated":"2023-09-08 09:53:51.000000000","message":"Will that guarantee that any exiting LRP already scheduled (and allocated in a GW chassis) will continue sending traffic through the same GW? Regardless of the other lower priority chassis.","commit_id":"b28f07a379f46f6386b80206ec0d6155ffe14ec8"},{"author":{"_account_id":29074,"name":"Felix Huettner","email":"felix.huettner@digits.schwarz","username":"felix.huettner"},"change_message_id":"3e36dee3f0275386b956b70adbafa95ccc504364","unresolved":true,"context_lines":[{"line_number":446,"context_line":"            az_hints \u003d self._nb_ovn.get_gateway_chassis_az_hints(g_name)"},{"line_number":447,"context_line":"            filtered_existing_chassis \u003d []"},{"line_number":448,"context_line":"            if reschedule_all_prios:"},{"line_number":449,"context_line":"                filtered_existing_chassis \u003d [primary]"},{"line_number":450,"context_line":"            else:"},{"line_number":451,"context_line":"                filtered_existing_chassis \u003d \\"},{"line_number":452,"context_line":"                    self.scheduler.filter_existing_chassis("}],"source_content_type":"text/x-python","patch_set":4,"id":"fc30575c_e28ac2be","line":449,"range":{"start_line":449,"start_character":16,"end_line":449,"end_character":53},"in_reply_to":"9d9dc3fc_076fa38e","updated":"2023-09-08 14:06:49.000000000","message":"Yes it will, since the primary of that LRP is actually the one sending traffic. This cause a short interruption if the primary is not the actual gw chassis sending the traffic (e.g. if the primary just went down, but neutron did not process the event yet). However that would be restored once all events would be processed","commit_id":"b28f07a379f46f6386b80206ec0d6155ffe14ec8"}]}
