[OVN] GW rescheduling logic is broken
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
neutron |
Fix Released
|
High
|
Maciej Jozefczyk |
Bug Description
When a Chassis event happens in the SB database, we attempt to reschedule any possible unhosted gateways [0] *always* due to a problem with the existing logic:
def get_unhosted_
for lrp in self._tables[
if not lrp.name.
physnet = port_physnet_
for chassis_name, prio in chassis_list:
# TODO(azbiswas): Handle the case when a chassis is no
# longer valid. This may involve moving conntrack states,
# so it needs to discussed in the OVN community first.
if is_max_gw_reached or utils.is_
return unhosted_gateways
1) is_max_gw_reached is always going to be True (as normally the possible candidates are less than the maximum)
2) unhosted_
3) Later on, in the caller, we're iterating over the returned list [1] so as it has all the LRPs N times (N being the names of gw chassis), it will do a lot of extra and unnecessary work.
This is almost harmless in the sense that it's not breaking any functionality but it creates unnecessary updates on the logical router port:
2020-01-31 15:54:04.669 37 DEBUG ovsdbapp.
2020-01-31 15:54:04.670 37 DEBUG ovsdbapp.
[0] https:/
[1] https:/
Changed in neutron: | |
assignee: | nobody → Maciej Jozefczyk (maciej.jozefczyk) |
status: | New → Confirmed |
Changed in neutron: | |
importance: | Undecided → High |
tags: | added: ovn |
tags: | added: neutron-proactive-backport-potential |
Fix proposed to branch: master /review. opendev. org/705660
Review: https:/