← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1596075] Re: Neutron confused about overlapping subnet creation

 

Reviewed:  https://review.openstack.org/367180
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=12420c1585abadc741440dcd48a5540ef85357db
Submitter: Jenkins
Branch:    master

commit 12420c1585abadc741440dcd48a5540ef85357db
Author: Kevin Benton <kevin@xxxxxxxxxx>
Date:   Wed Sep 7 18:51:58 2016 -0700

    Mark quota operations as retriable
    
    This decorates the quota system operations with
    the retry decorators. This will help significantly
    with the bug this marks as closed since operations
    in the quota engine after commit should no longer
    trigger retries of the full API operation.
    
    The logic to find the args in the decorator had
    to be adjusted to deal with functions already decorated.
    This just uses the getargspec function from pecan that
    deals with decorated functions.
    
    Partial-Bug: #1612798
    Closes-Bug: #1596075
    Change-Id: Ib786117dcea08af75551770ea4c30d460382b829


** 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/1596075

Title:
  Neutron confused about overlapping subnet creation

Status in neutron:
  Fix Released

Bug description:
  If I use heat to create a set of networks, each with its own subnet,
  sometimes I will get an error from Neutron that there is an overlap.

  There is an example heat template attached. In my environment, this
  will fail about 1 or 2 times in 10.

  The heat template does:

  for X in seq 0 10
    create network X
    assign subnet 172.16.X.0/24 to network X

  One of the stacks will get an error on one of the subnets, indicating:

  Requested Subnet With Cidr: 172.16.7.0/24 For Network: 73f99807-0b2a-
  49d3-8d11-B7bd74d02f4d Overlaps With Another Subnet.

  This is in turn coming from _validate_subnet_cidr() in db/ipam_backend_mixin.py.
  What is happening is that the 'new_subnet_cidr' passed in is matching against itself.

  Since I have 'allow_overlapping_ips=true', it does:
  subnet_list = network.subnets

  but, in the failure case, this subnet is already there. In the 'no
  failure case' it is not yet there.

  I have 3 heat API servers, and 72 heat workers (3 servers). The api
  servers are round-robin load balanced

  I just (2016-06-24) reproduced this against the master/head from
  github (so midway between mitaka and newton).

  I'm not sure if there is some missing locking, but for sure this is a
  race condition.

  I have ipam_driver unset

  If i comment out the exception in _validate_subnet_cidr() then it
  works OK.

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


References