[OVSDB-146] race condition between northbound and southbound events Created: 23/Apr/15 Updated: 19/Oct/17 Resolved: 25/Jan/16 |
|
| Status: | Resolved |
| Project: | ovsdb |
| Component/s: | openstack.net-virt |
| Affects Version/s: | unspecified |
| Fix Version/s: | None |
| Type: | Bug | ||
| Reporter: | Cédric Ollivier | Assignee: | Unassigned |
| Resolution: | Done | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: |
Operating System: Linux |
||
| External issue ID: | 3052 |
| Description |
|
When an interface is deleted, processRowUpdate (SouthboundHandler.java) tries to get the tenant network corresponding to this interface. But, in that implementation, the network will be null if the corresponding neutron port has been deleted before. It seems working when the owner is compute:nova or network:dhcp (reference setup). My logs show processRowUpdate is always called before doNeutronPortDeleted (PortHandler.java). It doesn't work in case of router_interface ports owned by l3-agent (my logs show that doNeutronPortDeleted is always called before). Network is null in processRowUpdate and then handleInterfaceDelete doesn't manage the flows to delete. Referring to ml2 plugin.py, we can't assume that l3-agent removes the interface before the call from delete_port_postcommit (mechanism_odl.py). More generally, we can't think that the interface will be deleted before the http delete request. A solution would be to manage network data in southbound delete events (eg. virtual tenant identifier) to handle interface delete. More disruptive solutions are possible too. |
| Comments |
| Comment by Flavio Fernandes [ 23/Apr/15 ] |
|
[16:47:48] <ollivier> I think this is really serious and forbid at least the use of l3-agent |
| Comment by Cédric Ollivier [ 03/May/15 ] |
|
It doesn't work in case of network:dhcp ports when the subnet is deleted. You must modify the subnet before deleting it (enable_dhcp=False). |
| Comment by Peter Bandzi [ 03/Jun/15 ] |
|
Tested in OPNFV project. used test from ODL integration suite: Plus added similar test for delete created network according ID Network, Subnet, Port still remains in ODL even when they were deleted from neutron. to reproduce: |