← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1350064] Re: Deadlock in quota reservations in security groups tests on old side of grenade (icehouse)

 

** Changed in: nova
       Status: Fix Committed => Fix Released

** Changed in: nova
    Milestone: None => juno-rc1

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1350064

Title:
  Deadlock in quota reservations in security groups tests on old side of
  grenade (icehouse)

Status in OpenStack Compute (Nova):
  Fix Released

Bug description:
  http://logs.openstack.org/60/109660/7/check/check-grenade-dsvm-
  partial-
  ncpu/deb4b82/logs/old/screen-n-api.txt.gz#_2014-07-28_19_59_01_933

  2014-07-28 19:59:01.933 ERROR nova.api.openstack [req-6907415f-1dd8-4bb3-9e63-d007c5afc6a7 SecurityGroupsTestAdminXML-687258929 SecurityGroupsTestAdminXML-417284851] Caught error: (OperationalError) (1213, 'Deadlock found when trying to get lock; try restarting transaction') 'SELECT quota_usages.created_at AS quota_usages_created_at, quota_usages.updated_at AS quota_usages_updated_at, quota_usages.deleted_at AS quota_usages_deleted_at, quota_usages.deleted AS quota_usages_deleted, quota_usages.id AS quota_usages_id, quota_usages.project_id AS quota_usages_project_id, quota_usages.user_id AS quota_usages_user_id, quota_usages.resource AS quota_usages_resource, quota_usages.in_use AS quota_usages_in_use, quota_usages.reserved AS quota_usages_reserved, quota_usages.until_refresh AS quota_usages_until_refresh \nFROM quota_usages \nWHERE quota_usages.deleted = %s AND quota_usages.project_id = %s FOR UPDATE' (0, 'ed64e6649d0840d5b9bb61189e50a675')
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack Traceback (most recent call last):
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/opt/stack/old/nova/nova/api/openstack/__init__.py", line 125, in __call__
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     return req.get_response(self.application)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/webob/request.py", line 1320, in send
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     application, catch_exc_info=False)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/webob/request.py", line 1284, in call_application
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     app_iter = application(self.environ, start_response)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     return resp(environ, start_response)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/opt/stack/old/python-keystoneclient/keystoneclient/middleware/auth_token.py", line 663, in __call__
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     return self.app(env, start_response)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     return resp(environ, start_response)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     return resp(environ, start_response)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/routes/middleware.py", line 131, in __call__
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     response = self.app(environ, start_response)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     return resp(environ, start_response)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     resp = self.call_func(req, *args, **self.kwargs)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     return self.func(req, *args, **kwargs)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/opt/stack/old/nova/nova/api/openstack/wsgi.py", line 917, in __call__
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     content_type, body, accept)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/opt/stack/old/nova/nova/api/openstack/wsgi.py", line 983, in _process_stack
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     action_result = self.dispatch(meth, request, action_args)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/opt/stack/old/nova/nova/api/openstack/wsgi.py", line 1070, in dispatch
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     return method(req=request, **action_args)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/opt/stack/old/nova/nova/api/openstack/compute/contrib/security_groups.py", line 330, in create
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     context, group_name, group_description)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/opt/stack/old/nova/nova/compute/api.py", line 3595, in create_security_group
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     reservations = QUOTAS.reserve(context, security_groups=1)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/opt/stack/old/nova/nova/quota.py", line 1270, in reserve
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     user_id=user_id)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/opt/stack/old/nova/nova/quota.py", line 513, in reserve
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     project_id=project_id, user_id=user_id)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/opt/stack/old/nova/nova/db/api.py", line 1105, in quota_reserve
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     project_id=project_id, user_id=user_id)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/opt/stack/old/nova/nova/db/sqlalchemy/api.py", line 164, in wrapper
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     return f(*args, **kwargs)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/opt/stack/old/nova/nova/db/sqlalchemy/api.py", line 202, in wrapped
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     return f(*args, **kwargs)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/opt/stack/old/nova/nova/db/sqlalchemy/api.py", line 3066, in quota_reserve
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     context, session, project_id, user_id)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/opt/stack/old/nova/nova/db/sqlalchemy/api.py", line 3034, in _get_project_user_quota_usages
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     with_lockmode('update').\
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2241, in all
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     return list(self)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2353, in __iter__
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     return self._execute_and_instances(context)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2368, in _execute_and_instances
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     result = conn.execute(querycontext.statement, self._params)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     params)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 761, in _execute_clauseelement
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     compiled_sql, distilled_params
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     context)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     exc_info
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     reraise(type(exception), exception, tb=exc_tb)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 867, in _execute_context
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     context)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 324, in do_execute
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     cursor.execute(statement, parameters)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174, in execute
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     self.errorhandler(self, exc, value)
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
  2014-07-28 19:59:01.933 2641 TRACE nova.api.openstack     raise errorclass, errorvalue

  Looks like when this fails it's in the partial grenade jobs in the old
  side of grenade, so we haven't gotten to the upgrade (if I understand
  grenade correctly) so could just be a latent bug in icehouse.

  It does look like it's racing in concurrent tests because it's the xml
  tests that are failing, which could be due to running smoke tests in
  grenade, but sdague would know more about that or would implications
  it has in how the tests run.

  Here is a reasonable logstash query:

  message:"SecurityGroupsTestAdminXML" AND message:"Deadlock found when
  trying to get lock; try restarting transaction" AND
  tags:"screen-n-api.txt" AND (build_name:"check-grenade-dsvm-partial-
  ncpu" OR build_name:"gate-grenade-dsvm-partial-ncpu")

  http://logstash.openstack.org/#eyJzZWFyY2giOiJtZXNzYWdlOlwiRGVhZGxvY2sgZm91bmQgd2hlbiB0cnlpbmcgdG8gZ2V0IGxvY2s7IHRyeSByZXN0YXJ0aW5nIHRyYW5zYWN0aW9uXCIgQU5EIHRhZ3M6XCJzY3JlZW4tbi1hcGkudHh0XCIgQU5EIChidWlsZF9uYW1lOlwiY2hlY2stZ3JlbmFkZS1kc3ZtLXBhcnRpYWwtbmNwdVwiIE9SIGJ1aWxkX25hbWU6XCJnYXRlLWdyZW5hZGUtZHN2bS1wYXJ0aWFsLW5jcHVcIikiLCJmaWVsZHMiOltdLCJvZmZzZXQiOjAsInRpbWVmcmFtZSI6IjYwNDgwMCIsImdyYXBobW9kZSI6ImNvdW50IiwidGltZSI6eyJ1c2VyX2ludGVydmFsIjowfSwic3RhbXAiOjE0MDY2NzEzOTM3MDcsIm1vZGUiOiIiLCJhbmFseXplX2ZpZWxkIjoiIn0=

  That shows 12 hits in 7 days.

  This could be related to bug 1297590 and there is history in bug
  1193199.

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


References