neutron/neutron/services
Miguel Lavalle 33de608f04 Avoid race condition when deleting trunk bridges
Prior to this change, trunk bridges are created by os-vif but deleted
by Neutron when the last vif is removed from it. This creates race
conditions in some use cases, like DPDK with vhostuserclient mode, when
VMs are rebooted. To avoid these races, Neutron will not delete trunk
bridges anymore. Their creation and deletion will be os-vif's
responsiblity. Since [1], Nova uses the os-vif version that contains
this functionality.

This patch also changes the trunk status change event. During a live
migration, when the trunk parent port has been bound to the destination
host (that means there is only one port binding associated) and the
status has changed to ACTIVE, the method triggers the subport binding
to the new host too. This is because there could be a race condition
between the subport binding, triggered by the OVS agent, and the parent
port binding, triggered by Nova. If when the OVS agent tries to bind the
subports, the parent port is still bound to the source host, the subport
binding remains in the source host too, instead of changing to the
destination.

This patch also reverts [2] and [3]. As commented in the previous
paragraph, this patch fixes the issue reported in LP#1997025. The trunk
port live migration with ML2/OVS must be fixed with this patch.

[1]https://review.opendev.org/c/openstack/nova/+/865031
[2]https://review.opendev.org/c/openstack/neutron/+/865295
[3]https://review.opendev.org/c/openstack/neutron/+/865424

Closes-Bug: #1869244
Closes-Bug: #1997025

Change-Id: I4e16357f3ff214fcf41e418982806c24088a2665
2022-11-17 10:39:30 +01:00
..
auto_allocate use payloads for NETWORK callback events 2021-05-08 20:50:46 +03:00
conntrack_helper Bump pylint version to support python 3.8 2020-08-06 16:00:30 +02:00
externaldns Report ExternalDNSOverQuota exception for zone quota error 2022-07-05 15:05:14 +00:00
flavors use api def ALIAS in supported_extension_aliases 2019-04-08 08:30:20 -06:00
l3_router [api]adds port_forwarding id when list floatingip 2022-08-26 08:45:09 +08:00
local_ip Add Local IP L2 extension skeleton 2021-11-11 10:25:27 +03:00
logapi Use ovs constants from neutron-lib 2022-06-17 10:36:44 +05:30
loki use sqla functions from neutron-lib 2018-07-25 21:04:20 +00:00
metering Fix remaining typos in comments and tests 2022-07-06 21:20:27 +05:30
ndp_proxy Forbid enable ndp proxy when external netwrok has no IPv6 address scope 2022-09-06 18:45:45 +08:00
network_ip_availability use api def ALIAS in supported_extension_aliases 2019-04-08 08:30:20 -06:00
network_segment_range Remove "six" library 2020-07-28 16:55:52 +00:00
ovn_l3 [sqlalchemy-20] Remove retry decorator from update_floatingip_status 2022-07-08 10:16:08 +02:00
placement_report Fix typos in log/error messages 2022-06-01 21:17:29 +05:30
portforwarding Merge "Fix misplaced comparison constant warnings" 2022-10-06 23:07:21 +00:00
qos Use neutron-lib method update_qos_allocation 2022-06-24 08:14:22 +00:00
rbac Neutron RBAC API and network support 2015-08-20 20:00:17 -07:00
revisions Bump revision number of objects when description is changed 2022-08-01 13:08:33 +02:00
segments Merge "Remove session active check in "_add_segment_host_mapping_for_segment"" 2022-05-27 11:20:25 +00:00
tag Add the corresponding DB context to all SQL transactions 2022-04-08 09:09:54 +00:00
timestamp Use neutron-lib standard_attr 2021-09-15 09:19:26 +00:00
trunk Avoid race condition when deleting trunk bridges 2022-11-17 10:39:30 +01:00
__init__.py Empty files should not contain copyright or license 2014-10-20 00:50:32 +00:00
provider_configuration.py Merge "Select service_provider on the basis of service_module" 2018-11-15 12:47:09 +00:00
service_base.py Make code follow log translation guideline 2017-08-14 02:01:48 +00:00