← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1463387] Re: quota-class-update api return 500 error if value is above mysql INT type

 

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

** Changed in: nova
    Milestone: None => liberty-2

-- 
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/1463387

Title:
  quota-class-update api return 500 error if value is above mysql INT
  type

Status in OpenStack Compute (nova):
  Fix Released

Bug description:
  nova quota-class-update api return 500 error if update value is
  greater than mysql INT type.

  steps to reproduce:

  $ nova quota-class-update --instances 2147483648 default
  ERROR: The server has either erred or is incapable of performing the requested operation. (HTTP 500)

  or 
  curl -g -i --cacert "/opt/stack/data/CA/int-ca/ca-chain.pem" -X PUT http://10.69.4.136:8774/v3/bd00959429ab477f812822ac32638bd7/os-quota-class-sets/default -H "User-Agent: python-novaclient" -H "Content-Type: application/json" -H "Accept: application/json" -H "X-Auth-Token: 4846614c5c3341f5a1828a987d692d5f" -d '{"quota_class_set": {"instances": 2147483648}}'

  n-api error logs:

  2015-06-09 04:32:40.215 ERROR oslo_db.sqlalchemy.exc_filters [req-dbe4c88d-0baa-4a8a-bf1a-3272412723a5 admin admin] DBAPIError exception wrapped from (DataE
  rror) (1264, "Out of range value for column 'hard_limit' at row 8") 'UPDATE quota_classes SET updated_at=%s, hard_limit=%s WHERE quota_classes.deleted = %s
  AND quota_classes.class_name = %s AND quota_classes.resource = %s' (datetime.datetime(2015, 6, 9, 11, 32, 40, 214756), 2147483648, 0, 'default', 'instances'
  )
  2015-06-09 04:32:40.215 TRACE oslo_db.sqlalchemy.exc_filters Traceback (most recent call last):
  2015-06-09 04:32:40.215 TRACE oslo_db.sqlalchemy.exc_filters   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1063, in _execu
  te_context
  2015-06-09 04:32:40.215 TRACE oslo_db.sqlalchemy.exc_filters     context)
  2015-06-09 04:32:40.215 TRACE oslo_db.sqlalchemy.exc_filters   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 442, in do_e
  xecute
  2015-06-09 04:32:40.215 TRACE oslo_db.sqlalchemy.exc_filters     cursor.execute(statement, parameters)
  2015-06-09 04:32:40.215 TRACE oslo_db.sqlalchemy.exc_filters   File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174, in execute
  2015-06-09 04:32:40.215 TRACE oslo_db.sqlalchemy.exc_filters     self.errorhandler(self, exc, value)
  2015-06-09 04:32:40.215 TRACE oslo_db.sqlalchemy.exc_filters   File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandl
  er
  2015-06-09 04:32:40.215 TRACE oslo_db.sqlalchemy.exc_filters     raise errorclass, errorvalue
  2015-06-09 04:32:40.215 TRACE oslo_db.sqlalchemy.exc_filters DataError: (1264, "Out of range value for column 'hard_limit' at row 8")
  2015-06-09 04:32:40.215 TRACE oslo_db.sqlalchemy.exc_filters
  2015-06-09 04:32:40.217 ERROR nova.api.openstack [req-dbe4c88d-0baa-4a8a-bf1a-3272412723a5 admin admin] Caught error: (DataError) (1264, "Out of range value
   for column 'hard_limit' at row 8") 'UPDATE quota_classes SET updated_at=%s, hard_limit=%s WHERE quota_classes.deleted = %s AND quota_classes.class_name = %
  s AND quota_classes.resource = %s' (datetime.datetime(2015, 6, 9, 11, 32, 40, 214756), 2147483648, 0, 'default', 'instances')
  2015-06-09 04:32:40.217 TRACE nova.api.openstack Traceback (most recent call last):
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/opt/stack/nova/nova/api/openstack/__init__.py", line 126, in __call__
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     return req.get_response(self.application)
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1317, in send
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     application, catch_exc_info=False)
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1281, in call_application
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     app_iter = application(self.environ, start_response)
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     return resp(environ, start_response)
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/keystonemiddleware/auth_token/__init__.py", line 639, in __c
  all__
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     return self._call_app(env, start_response)
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/keystonemiddleware/auth_token/__init__.py", line 559, in _ca
  ll_app
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     return self._app(env, _fake_start_response)

  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     return resp(environ, start_response)
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/routes/middleware.py", line 136, in __call__
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     response = self.app(environ, start_response)
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     return resp(environ, start_response)
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     resp = self.call_func(req, *args, **self.kwargs)
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     return self.func(req, *args, **kwargs)
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/opt/stack/nova/nova/api/openstack/wsgi.py", line 756, in __call__
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     content_type, body, accept)
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/opt/stack/nova/nova/api/openstack/wsgi.py", line 821, in _process_stack
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     action_result = self.dispatch(meth, request, action_args)
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/opt/stack/nova/nova/api/openstack/wsgi.py", line 911, in dispatch
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     return method(req=request, **action_args)
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/opt/stack/nova/nova/api/openstack/compute/contrib/quota_classes.py", line 76, in update
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     utils.check_string_length(id, 'quota_class',
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/opt/stack/nova/nova/db/api.py", line 1108, in quota_class_update
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     return IMPL.quota_class_update(context, class_name, resource, limit)
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/opt/stack/nova/nova/db/sqlalchemy/api.py", line 215, in wrapper
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     return f(*args, **kwargs)
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/opt/stack/nova/nova/db/sqlalchemy/api.py", line 3195, in quota_class_update
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     update({'hard_limit': limit})
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2851, in update
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     update_op.exec_()
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 897, in exec_
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     self._do_exec()
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 995, in _do_exec
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     update_stmt, params=self.query._params)
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1021, in execute
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     bind, close_with_result=True).execute(clause, params or {})
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 841, in execute
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     return meth(self, multiparams, params)
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/elements.py", line 322, in _execute_on_connec
  tion
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     return connection._execute_clauseelement(self, multiparams, params)
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 938, in _execute_clauseelement
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     compiled_sql, distilled_params
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1070, in _execute_context
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     context)
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/oslo_db/sqlalchemy/compat/handle_error.py", line 261, in _handle_dbapi_exception
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     e, statement, parameters, cursor, context)
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1267, in _handle_dbapi_exception
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     util.raise_from_cause(newraise, exc_info)
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 199, in raise_from_cause
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     reraise(type(exception), exception, tb=exc_tb)
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1063, in _execute_context
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     context)
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 442, in do_execute
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     cursor.execute(statement, parameters)
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174, in execute
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     self.errorhandler(self, exc, value)
  2015-06-09 04:32:40.217 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
  2015-06-09 04:32:40.217 TRACE nova.api.openstack     raise errorclass, errorvalue
  2015-06-09 04:32:40.217 TRACE nova.api.openstack DBError: (DataError) (1264, "Out of range value for column 'hard_limit' at row 8") 'UPDATE quota_classes SET updated_at=%s, hard_limit=%s WHERE quota_classes.deleted = %s AND quota_classes.class_name = %s AND quota_classes.resource = %s' (datetime.datetime(2015, 6, 9, 11, 32, 40, 214756), 2147483648, 0, 'default', 'instances')
  2015-06-09 04:32:40.217 TRACE nova.api.openstack
  2015-06-09 04:32:40.223 INFO nova.api.openstack [req-dbe4c88d-0baa-4a8a-bf1a-3272412723a5 admin admin] http://10.69.4.136:8774/v2/bd00959429ab477f812822ac32638bd7/os-quota-class-sets/default returned with HTTP 500

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


References