← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1556139] Re: ml2 create extension processing racey

 

Reviewed:  https://review.openstack.org/291765
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=3ab6f8fb4539136fc193c722be98926701da6b32
Submitter: Jenkins
Branch:    master

commit 3ab6f8fb4539136fc193c722be98926701da6b32
Author: Kevin Benton <kevin@xxxxxxxxxx>
Date:   Fri Mar 11 06:57:01 2016 -0800

    Extend dicts with original model in create/update
    
    This adjusts the logic in ML2 create port and create
    network to use the original DB object created rather
    than attempting to retrieve it from the DB again.
    This eliminates the race window where the object could
    be deleted out from underneath the create operations
    resulting in a 404.
    
    To achieve this it adds a create_port_db and
    create_network_db method to db_base_plugin_v2 that
    returns the original model instead of returning a
    dictionary.
    
    This also adds a skip to a unit test that was using DB
    events to trigger a rollback and retry. This test was
    causing failures with a FlushError conflict between an
    SQL alchemy new instance and a persistent instance in
    the session. This bug is fixed in the follow-up patch.
    
    Closes-Bug: #1556139
    Related-Bug: #1556178
    Change-Id: I3c4b4cb4f63236fca24abaf58881879c2d5657fa


** Changed in: neutron
       Status: In Progress => Fix Released

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

Title:
  ml2 create extension processing racey

Status in neutron:
  Fix Released

Bug description:
  The change to make the create result for networks and ports the same
  as the get result[1] changed create_port and create_network to call
  get_port and get_network (respectively) before returning. The issue
  with this approach is that the port or network can be deleted between
  when the record was committed and when the get operation is called.
  This results in the operations throwing a port or network not found
  error, which makes no sense in the context of a create.


  1.
  https://github.com/openstack/neutron/commit/b6d091279fffe441f6d28e687313ad031a24a3ec

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


References