← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1529037] [NEW] l3 ha add_ha_port rollback is mostly broken in create_ha_port_and_bind

 

Public bug reported:

create_ha_port_and_bind  starts a transaction and then calls
add_ha_port.

add_ha_port creates a port via the core plugin API and then tries to
create a binding. If the binding fails, it tries to delete the port via
the core plugin API. However, when called during the transaction in
create_ha_port_and_bind, the delete_port call will fail because the
transaction will already be in the rolled back state[1].

This failure mode happened to sort of work by accident when running the
reference implementation because the DB state would be rolled back the
the port would be removed. However, the agents wouldn't be notified and
any mechanism drivers that allocated backend resources for the port
would not release them. It also resulted in ugly tracebacks.


1. http://paste.openstack.org/show/482652/

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

** Changed in: neutron
     Assignee: (unassigned) => Kevin Benton (kevinbenton)

** Changed in: neutron
   Importance: Undecided => Medium

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

Title:
  l3 ha add_ha_port rollback is mostly broken in create_ha_port_and_bind

Status in neutron:
  In Progress

Bug description:
  create_ha_port_and_bind  starts a transaction and then calls
  add_ha_port.

  add_ha_port creates a port via the core plugin API and then tries to
  create a binding. If the binding fails, it tries to delete the port
  via the core plugin API. However, when called during the transaction
  in create_ha_port_and_bind, the delete_port call will fail because the
  transaction will already be in the rolled back state[1].

  This failure mode happened to sort of work by accident when running
  the reference implementation because the DB state would be rolled back
  the the port would be removed. However, the agents wouldn't be
  notified and any mechanism drivers that allocated backend resources
  for the port would not release them. It also resulted in ugly
  tracebacks.


  1. http://paste.openstack.org/show/482652/

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


Follow ups