← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1416554] [NEW] l3 prevent port deletion doesn't handle missing ports

 

Public bug reported:

The l3 code to check to see if a port can be deleted does not handle the
case where the port id it is passed does not refer to a port that still
exists. This throws an exception and makes the API behavior inconsistent
when two concurrent requests come in to delete the same port.[1] This is
inconsistent because if the port is concurrently deleted after the l3
check is done but before the delete attempt is made, no exception will
be raised.[2]


1. This happens frequently when horizon deletes the subnet and immediately deletes the network afterwards.  The dhcp agent will delete it's port on the subnet cleanup and may rip the port right before the delete_network call does it's auto port cleanup. The auto port cleanup will then hit a portnotfound exception which goes uncaught.
2. https://github.com/openstack/neutron/blob/6a797f354eb4ba936b80603f7cc01a2fe80446fd/neutron/plugins/ml2/plugin.py#L1113

** Affects: neutron
     Importance: Undecided
     Assignee: Kevin Benton (kevinbenton)
         Status: In Progress

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1416554

Title:
  l3 prevent port deletion doesn't handle missing ports

Status in OpenStack Neutron (virtual network service):
  In Progress

Bug description:
  The l3 code to check to see if a port can be deleted does not handle
  the case where the port id it is passed does not refer to a port that
  still exists. This throws an exception and makes the API behavior
  inconsistent when two concurrent requests come in to delete the same
  port.[1] This is inconsistent because if the port is concurrently
  deleted after the l3 check is done but before the delete attempt is
  made, no exception will be raised.[2]



  1. This happens frequently when horizon deletes the subnet and immediately deletes the network afterwards.  The dhcp agent will delete it's port on the subnet cleanup and may rip the port right before the delete_network call does it's auto port cleanup. The auto port cleanup will then hit a portnotfound exception which goes uncaught.
  2. https://github.com/openstack/neutron/blob/6a797f354eb4ba936b80603f7cc01a2fe80446fd/neutron/plugins/ml2/plugin.py#L1113

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1416554/+subscriptions


Follow ups

References