Skip to content

Commit

Permalink
Fix concurrency issue when creating pools
Browse files Browse the repository at this point in the history
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
  • Loading branch information
eonpatapon committed Sep 8, 2015
1 parent 2887079 commit bcdd55c
Showing 1 changed file with 7 additions and 6 deletions.
Expand Up @@ -188,22 +188,23 @@ def _get_object_tenant_id(self, obj):
def get_resource(self, context, id, fields=None):
""" Implement GET by uuid.
"""
tenant_id = str(uuid.UUID(context.tenant_id))
try:
obj = self.resource_read(id=id)
project_id = self._get_object_tenant_id(obj)
if not context.is_admin and tenant_id != project_id:
raise NoIdError(id)
res = self.make_dict(obj, fields)
except NoIdError:
raise self.get_exception_notfound(id=id)
tenant_id = str(uuid.UUID(context.tenant_id))
project_id = self._get_object_tenant_id(obj)
if not context.is_admin and tenant_id != project_id:
raise self.get_exception_notfound(id=id)
return self.make_dict(obj, fields)
return res

def _get_resource_dict(self, uuid, filters, fields):
try:
obj = self.resource_read(id=uuid)
res = self.make_dict(obj, None)
except NoIdError:
return None
res = self.make_dict(obj, None)
if not self._apply_filter(res, filters):
return None
return self._fields(res, fields)
Expand Down

0 comments on commit bcdd55c

Please sign in to comment.