← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1642485] Re: create/update respource_provider APIs raises HTTP 500 Internal Server Error when name is greater than 200 characters

 

Reviewed:  https://review.openstack.org/398998
Committed: https://git.openstack.org/cgit/openstack/nova/commit/?id=9bbce28c56666de6eb430d027af4ddf5cfc686e4
Submitter: Jenkins
Branch:    master

commit 9bbce28c56666de6eb430d027af4ddf5cfc686e4
Author: bhagyashris <bhagyashri.shewale@xxxxxxxxxxx>
Date:   Wed Nov 30 20:41:48 2016 +0530

    Return 400 when name is more than 200 characters
    
    APIs listed below are returning 500 error if you pass name more than
    200 characters.
    1. create resource_providers
    2. update resource_providers
    
    Added maxLength check in schema to ensure name should not be more than
    200 characters.
    
    Closes-Bug: #1642485
    Change-Id: Ia22ae86702dabe18bc577b17164a81c363da6d41


** Changed in: nova
       Status: In Progress => Fix Released

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

Title:
  create/update respource_provider APIs raises HTTP 500 Internal Server
  Error when name is greater than 200 characters

Status in OpenStack Compute (nova):
  Fix Released

Bug description:
  create/update resource_provider APIs raises HTTP 500 Internal Server Error if you pass name
  greater than 200 character

  Steps to reproduce:

  $ curl -g -i -X POST http://10.232.48.200/placement/resource_providers
  -H "Content-Type: application/json" -H "X-Auth-Token:
  38aac4d389d3437da8f6c0107a81ae95" -d '{"name":
  "testcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccctestcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccctestcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccctestcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccctestcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccctestcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccctestcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"}'

  Output:

  HTTP/1.1 500 Internal Server Error
  Date: Thu, 17 Nov 2016 06:45:05 GMT
  Server: Apache/2.4.7 (Ubuntu)
  x-openstack-request-id: req-7408f1f0-62be-4b22-9fdc-b005b9dc74c0
  Content-Length: 128
  Connection: close
  Content-Type: application/json; charset=UTF-8

  {"computeFault": {"message": "The server has either erred or is
  incapable of performing the requested operation.", "code": 500}}

  
  Error log:

  2016-11-17 12:15:05.334 TRACE nova.api.openstack Traceback (most recent call last):
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/opt/stack/nova/nova/api/openstack/
  __init__.py", line 88, in __call__
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     return req.get_response(self.applicatio
  n)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packa
  ges/webob/request.py", line 1299, in send
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     application, catch_exc_info=False)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packa
  ges/webob/request.py", line 1263, in call_application
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     app_iter = application(self.environ, st
  art_response)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packa
  ges/webob/dec.py", line 130, in __call__
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     resp = self.call_func(req, *args, **sel
  f.kwargs)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packa
  ges/webob/dec.py", line 195, in call_func
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     return self.func(req, *args, **kwargs)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/opt/stack/nova/nova/api/openstack/
  placement/microversion.py", line 103, in __call__
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     response = req.get_response(self.applic
  ation)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packa
  ges/webob/request.py", line 1299, in send
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     application, catch_exc_info=False)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packa
  ges/webob/request.py", line 1263, in call_application
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     app_iter = application(self.environ, st
  art_response)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/opt/stack/nova/nova/api/openstack/
  placement/handler.py", line 188, in __call__
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     return dispatch(environ, start_response
  , self._map)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/opt/stack/nova/nova/api/openstack/
  placement/handler.py", line 111, in dispatch
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     return handler(environ, start_response)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packa
  ges/webob/dec.py", line 130, in __call__
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     resp = self.call_func(req, *args, **sel
  f.kwargs)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packa
  ges/webob/dec.py", line 195, in call_func
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     return self.func(req, *args, **kwargs)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/opt/stack/nova/nova/api/openstack/placement/util.py", line 133, in decorated_function
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     return f(req)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     return f(req)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/opt/stack/nova/nova/api/openstack/placement/handlers/resource_provider.py", line 89, in create_resource_provider
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     resource_provider.create()
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/oslo_versionedobjects/base.py", line 226, in wrapper
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     return fn(self, *args, **kwargs)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/opt/stack/nova/nova/objects/resource_provider.py", line 331, in create
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     db_rp = self._create_in_db(self._context, updates)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/oslo_db/sqlalchemy/enginefacade.py", line 824, in wrapper
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     return fn(*args, **kwargs)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/lib/python2.7/contextlib.py", line 24, in __exit__
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     self.gen.next()
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/oslo_db/sqlalchemy/enginefacade.py", line 875, in _transaction_scope
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     yield resource
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/lib/python2.7/contextlib.py", line 24, in __exit__
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     self.gen.next()
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/oslo_db/sqlalchemy/enginefacade.py", line 522, in _session
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     self._end_session_transaction(self.session)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/oslo_db/sqlalchemy/enginefacade.py", line 543, in _end_session_transaction
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     session.commit()
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 801, in commit
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     self.transaction.commit()
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 392, in commit
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     self._prepare_impl()
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 372, in _prepare_impl
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     self.session.flush()
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2019, in flush
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     self._flush(objects)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2137, in _flush
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     transaction.rollback(_capture_exception=True)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 60, in __exit__
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     compat.reraise(exc_type, exc_value, exc_tb)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2101, in _flush
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     flush_context.execute()
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 373, in execute
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     rec.execute(self)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 532, in execute
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     uow
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 174, in save_obj
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     mapper, table, insert)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 800, in _emit_insert_statements
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     execute(statement, params)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 914, in execute
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     return meth(self, multiparams, params)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/elements.py", line 323, in _execute_on_connection
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     return connection._execute_clauseelement(self, multiparams, params)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1010, in _execute_clauseelement
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     compiled_sql, distilled_params
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1146, in _execute_context
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     context)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1337, in _handle_dbapi_exception
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     util.raise_from_cause(newraise, exc_info)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 202, in raise_from_cause
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     reraise(type(exception), exception, tb=exc_tb, cause=cause)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1139, in _execute_context
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     context)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 450, in do_execute
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     cursor.execute(statement, parameters)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 166, in execute
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     result = self._query(query)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 322, in _query
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     conn.query(q)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 835, in query
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1019, in _read_query_result
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     result.read()
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1302, in read
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     first_packet = self.connection._read_packet()
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 981, in _read_packet
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     packet.check_error()
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 393, in check_error
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     err.raise_mysql_exception(self._data)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File "/usr/local/lib/python2.7/dist-packages/pymysql/err.py", line 107, in raise_mysql_exception
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     raise errorclass(errno, errval)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack DBError: (pymysql.err.DataError) (1406, u"Data too long for column 'name' at row 1") [SQL: u'INSERT INTO resource_providers (created_at, updated_at, uuid, name, generation, can_host) VALUES (%(created_at)s, %(updated_at)s, %(uuid)s, %(name)s, %(generation)s, %(can_host)s)'] [parameters: {'uuid': '5730402b-eff2-485a-906c-cbf0cb02f4ab', 'generation': 0, 'created_at': datetime.datetime(2016, 11, 17, 6, 45, 5, 321074), 'updated_at': None, 'can_host': 0, 'name': u'testcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccctestcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccctestcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccctestcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccctestcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccctestcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccctestcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc'}]

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


References