Concurrency issue when creating/deleting multiple lbaas pools

Bug #1492952 reported by eon
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Juniper Openstack
Status tracked in Trunk
Trunk
Fix Committed
High
Unassigned
OpenContrail
New
High
Unassigned

Bug Description

When creating a lbaas pool while other pools are deleted can make the plugin crash like this:

    neutron neutron.api.v2.resource [req-8e95b7c6-3a99-4bbf-8764-63a49824911e None] create failed

    2015-09-04 14:16:31.742 3264 TRACE neutron.api.v2.resource Traceback (most recent call last):

    2015-09-04 14:16:31.742 3264 TRACE neutron.api.v2.resource File "/usr/share/python/neutron/lib/python2.7/site-packages/neutron/api/v2/resource.py", line 87, in resource

    2015-09-04 14:16:31.742 3264 TRACE neutron.api.v2.resource result = method(request=request, **args)

    2015-09-04 14:16:31.742 3264 TRACE neutron.api.v2.resource File "/usr/share/python/neutron/lib/python2.7/site-packages/neutron/api/v2/base.py", line 402, in create

    2015-09-04 14:16:31.742 3264 TRACE neutron.api.v2.resource tenant_id)

    2015-09-04 14:16:31.742 3264 TRACE neutron.api.v2.resource File "/usr/share/python/neutron/lib/python2.7/site-packages/neutron/quota.py", line 273, in count

    2015-09-04 14:16:31.742 3264 TRACE neutron.api.v2.resource return res.count(context, *args, **kwargs)

    2015-09-04 14:16:31.742 3264 TRACE neutron.api.v2.resource File "/usr/share/python/neutron/lib/python2.7/site-packages/neutron/quota.py", line 320, in _count_resource

    2015-09-04 14:16:31.742 3264 TRACE neutron.api.v2.resource obj_list = obj_getter(context, filters={'tenant_id': [tenant_id]})

    2015-09-04 14:16:31.742 3264 TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/neutron_plugin_contrail/plugins/opencontrail/loadbalancer/loadbalancer_db.py", line 105, in get_pools

    2015-09-04 14:16:31.742 3264 TRACE neutron.api.v2.resource return self._pool_manager.get_collection(context, filters, fields)

    2015-09-04 14:16:31.742 3264 TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/neutron_plugin_contrail/plugins/opencontrail/loadbalancer/resource_manager.py", line 228, in get_collection

    2015-09-04 14:16:31.742 3264 TRACE neutron.api.v2.resource res = self._get_resource_dict(v['uuid'], filters, fields)

    2015-09-04 14:16:31.742 3264 TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/neutron_plugin_contrail/plugins/opencontrail/loadbalancer/resource_manager.py", line 201, in _get_resource_dict

    2015-09-04 14:16:31.742 3264 TRACE neutron.api.v2.resource res = self.make_dict(obj, None)

    2015-09-04 14:16:31.742 3264 TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/neutron_plugin_contrail/plugins/opencontrail/loadbalancer/loadbalancer_pool.py", line 60, in make_dict

    2015-09-04 14:16:31.742 3264 TRACE neutron.api.v2.resource members = pool.get_loadbalancer_members()

    2015-09-04 14:16:31.742 3264 TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/vnc_api/gen/resource_client.py", line 4123, in get_loadbalancer_members

    2015-09-04 14:16:31.742 3264 TRACE neutron.api.v2.resource obj = svr_conn.loadbalancer_pool_read(id = self.uuid, fields = ['loadbalancer_members'])

    2015-09-04 14:16:31.742 3264 TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/vnc_api/gen/vnc_api_client_gen.py", line 3408, in loadbalancer_pool_read

    2015-09-04 14:16:31.742 3264 TRACE neutron.api.v2.resource content = self._request_server(rest.OP_GET, uri, query_params)

    2015-09-04 14:16:31.742 3264 TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/vnc_api/vnc_api.py", line 364, in _request_server

    2015-09-04 14:16:31.742 3264 TRACE neutron.api.v2.resource % (op, url, data, content))

    2015-09-04 14:16:31.742 3264 TRACE neutron.api.v2.resource NoIdError: Unknown id: Error: oper 2 url /loadbalancer-pool/468cadc7-3c22-4740-9f8f-7648b0e894a7 body {'fields': 'loadbalancer_members'} response No loadbalancer-pool object found for id 468cadc7-3c22-4740-9f8f-7648b0e894a7

    2015-09-04 14:16:31.742 3264 TRACE neutron.api.v2.resource

Tags: neutronapi
Revision history for this message
OpenContrail Admin (ci-admin-f) wrote : [Review update] master

Review in progress for https://review.opencontrail.org/13629
Submitter: Jean-Philippe Braun (<email address hidden>)

Changed in opencontrail:
importance: Undecided → High
Revision history for this message
OpenContrail Admin (ci-admin-f) wrote : A change has been merged

Reviewed: https://review.opencontrail.org/13629
Committed: http://github.org/Juniper/contrail-neutron-plugin/commit/bcdd55ca21663975a0ffe3e007c79636aa770575
Submitter: Zuul
Branch: master

commit bcdd55ca21663975a0ffe3e007c79636aa770575
Author: Jean-Philippe Braun <email address hidden>
Date: Mon Sep 7 10:14:14 2015 +0200

Fix concurrency issue when creating pools

A pool can be deleted after the resource_read call and then
does not exists anymore when calling make dict.

Change-Id: I6995a9a073f981300df903bf869f4dd04c1aa23b
Closes-Bug: #1492952

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.