← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1718877] Re: nova-api returns 500 error(DBError) if nova list API is called with filters with empty string

 

** Changed in: nova
   Importance: Undecided => Medium

** Also affects: nova/ocata
   Importance: Undecided
       Status: New

** Also affects: nova/pike
   Importance: Undecided
       Status: New

** Changed in: nova/ocata
       Status: New => Confirmed

** Changed in: nova/pike
       Status: New => Confirmed

** Changed in: nova/ocata
   Importance: Undecided => Medium

** Changed in: nova/pike
   Importance: Undecided => Medium

** Tags added: api

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

Title:
  nova-api returns 500 error(DBError) if nova list API is called with
  filters with empty string

Status in OpenStack Compute (nova):
  In Progress
Status in OpenStack Compute (nova) ocata series:
  Confirmed
Status in OpenStack Compute (nova) pike series:
  Confirmed

Bug description:
  If nova list API is called with filter as empty regex pattern like below:
      http://<host-ip>/compute/v2.1/servers?name=""

  it fails at db layer with below error and returns 500 InternalServerError
  to user:

    InternalError: (1139, u"Got error 'empty (sub)expression' from
  regexp")

  
  Looks like the issue is there for every query parameter which is using below
  regex parameter types defined in parameter_types.py:

      common_query_regex_param


  Reproduction steps:

  Current nova master:
  commit 2761b7fc40366644f611cb994342c5387f7fc6a1
  Merge: bd37c64 8c44be5
  Author: Jenkins <jenkins@xxxxxxxxxxxxxxxxxxxx>
  Date:   Tue Sep 19 02:58:27 2017 +0000

      Merge "Updated from global requirements"

  devstack:
  commit 6c87f363a1255270a3711b3fe7a065cc693164b9
  Merge: f60babc 1d141da
  Author: Jenkins <jenkins@xxxxxxxxxxxxxxxxxxxx>
  Date:   Tue Sep 19 02:07:16 2017 +0000

      Merge "Feature flag on tempest conf to notify enabled LDAP"

  
  1] nova list API:

  curl -g -i -X GET http://10.232.48.201/compute/v2.1/servers?name=""; 
  -H "OpenStack-API-Version: compute 2.53" -H "User-Agent: python-novaclient" 
  -H "Accept: application/json" -H "X-OpenStack-Nova-API-Version: 2.53" 
  -H "X-Auth-Token: 2e403dfaae4a4d7fbcf0a9fc4f97d8e4"

  HTTP/1.1 500 Internal Server Error
  Date: Fri, 15 Sep 2017 10:34:39 GMT
  Server: Apache/2.4.18 (Ubuntu)
  OpenStack-API-Version: compute 2.53
  X-OpenStack-Nova-API-Version: 2.53
  Vary: OpenStack-API-Version,X-OpenStack-Nova-API-Version
  Content-Type: application/json; charset=UTF-8
  Content-Length: 199
  x-openstack-request-id: req-85ae3592-3726-4e95-8bb9-9a9204dd7e68
  x-compute-request-id: req-85ae3592-3726-4e95-8bb9-9a9204dd7e68
  Connection: close

  {"computeFault": {"message": "Unexpected API Error. Please report this
  at http://bugs.launchpad.net/nova/ and attach the Nova API log if
  possible.\n<class 'oslo_db.exception.DBError'>", "code": 500}}

  
  Nova-API logs:

  Sep 15 16:04:40 dbopenstack-VirtualBox devstack@n-api.service[989]: ERROR oslo_db.sqlalchemy.exc_filters [None req-85ae3592-3726-4e95-8bb9-9a9204dd7e68 admin admin] 
  DBAPIError exception wrapped from (pymysql.err.InternalError) (1139, u"Got error 'empty (sub)expression' from regexp") [SQL: u'SELECT anon_1.instances_created_at AS anon_1_instances_created_at,
  anon_1.instances_updated_at AS anon_1_instances_updated_at, anon_1.instances_deleted_at AS anon_1_instances_deleted_at, anon_1.instances_deleted AS anon_1_instances_deleted, anon_1.
  instances_id AS anon_1_instances_id, anon_1.instances_user_id AS anon_1_instances_user_id, anon_1.instances_project_id AS anon_1_instances_project_id, anon_1.instances_image_ref AS anon_
  1_instances_image_ref, anon_1.instances_kernel_id AS anon_1_instances_kernel_id, anon_1.instances_ramdisk_id AS anon_1_instances_ramdisk_id, anon_1.instances_hostname AS anon_1_instanc
  es_hostname, anon_1.instances_launch_index AS anon_1_instances_launch_index, anon_1.instances_key_name AS anon_1_instances_key_name, anon_1.instances_key_data AS anon_1_instances_k
  ey_data, anon_1.instances_power_state AS anon_1_instances_power_state, ano
  n_1.instances_vm_state AS anon_1_instances_vm_state, anon_1.instances_task_state AS anon_1_instances_task_state, anon_1.instances_memory_mb AS anon_1_instances_memory_mb, anon_1.i
  nstances_vcpus AS anon_1_instances_vcpus, anon_1.instances_root_gb AS anon_1_instances_root_gb, anon_1.instances_ephemeral_gb AS anon_1_instances_ephemeral_gb, anon_1.instances_ephe
  meral_key_uuid AS anon_1_instances_ephemeral_key_uuid, anon_1.instances_host AS anon_1_instances_host, anon_1.instances_node AS anon_1_instances_node, anon_1.instances_instance_type
  _id AS anon_1_instances_instance_type_id, anon_1.instances_user_data AS anon_1_instances_user_data, anon_1.instances_reservation_id AS anon_1_instances_reservation_id, anon_1.instances_lau
  nched_at AS anon_1_instances_launched_at, anon_1.instances_terminated_at AS anon_1_instances_terminated_at, anon_1.instances_availability_zone AS anon_1_instances_availability
  Sep 15 16:04:40 dbopenstack-VirtualBox devstack@n-api.service[989]: _zone, anon_1.instances_display_name AS anon_1_instances_display_name, anon_1.instances_display_description AS anon_1_in
  stances_display_description, anon_1.instances_launched_on AS anon_1_instances_launched_on, anon_1.instances_locked AS anon_1_instances_locked, anon_1.instances_locked_by AS anon_1_insta
  nces_locked_by, anon_1.instances_os_type AS anon_1_instances_os_type, anon_1.instances_architecture AS anon_1_instances_architecture, anon_1.instances_vm_mode AS anon_1_instances_vm_
  mode, anon_1.instances_uuid AS anon_1_instances_uuid, anon_1.instances_root_device_name AS anon_1_instances_root_device_name, anon_1.instances_default_ephemeral_device AS anon_1_i
  nstances_default_ephemeral_device, anon_1.instances_default_swap_device AS anon_1_instances_default_swap_device, anon_1.instances_config_drive AS anon_1_instances_config_drive, anon_1.i
  nstances_access_ip_v4 AS anon_1_instances_access_ip_v4, anon_1.instances_access_ip_v6 AS anon_1_instances_access_ip_v6, anon_1.instances_auto_disk_config AS anon_1_instances_auto_disk_co
  nfig, anon_1.instances_progress AS anon_1_instances_progress, anon_1.instances_shutdown_terminate AS anon_1_instances_shutdown_terminate, anon_1.instances_disable_terminate AS anon_1_in
  stances_disable_terminate, anon_1.instances_cell_name AS anon_1_instances_cell_name, anon_1.instances_cleaned AS anon_1_instances_cleaned, security_groups_1.created_at AS security_groups_1
  _created_at, security_groups_1.updated_at AS security_groups_1_updated_at, security_groups_1.deleted_at AS security_groups_1_deleted_at, security_groups_1.deleted AS security_groups_1_delete
  d, security_groups_1.id AS security_groups_1_id, security_groups_1.name AS security_groups_1_name, security_groups_1.description AS security_groups_1_description, security_groups_1.user_id AS sec
  urity_groups_1_user_id, security_groups_1.project_id AS security_groups_1_project_id, instance_info_caches_1.created_at AS instance_info_caches_1_created_at, instance_info_caches_1.updated_at A
  S instance_info_caches_1_updated_at, instance_info_caches_1.
  Sep 15 16:04:40 dbopenstack-VirtualBox devstack@n-api.service[989]: deleted_at AS instance_info_caches_1_deleted_at, instance_info_caches_1.deleted AS instance_info_caches_1_deleted, instance_in
  fo_caches_1.id AS instance_info_caches_1_id, instance_info_caches_1.network_info AS instance_info_caches_1_network_info, instance_info_caches_1.instance_uuid AS instance_info_caches_1_instance_
  uuid \nFROM (SELECT instances.created_at AS instances_created_at, instances.updated_at AS instances_updated_at, instances.deleted_at AS instances_deleted_at, instances.deleted AS instances_deleted, in
  stances.id AS instances_id, instances.user_id AS instances_user_id, instances.project_id AS instances_project_id, instances.image_ref AS instances_image_ref, instances.kernel_id AS instances_kernel_id, insta
  nces.ramdisk_id AS instances_ramdisk_id, instances.hostname AS instances_hostname, instances.launch_index AS instances_launch_index, instances.key_name AS instances_key_name, instances.key_data
  AS instances_key_data, instances.power_state AS instances_power_state, instances.vm_state AS instances_vm_state, instances.task_state AS instances_task_state, instances.memory_mb AS instances_me
  mory_mb, instances.vcpus AS instances_vcpus, instances.root_gb AS insta
  nces_root_gb, instances.ephemeral_gb AS instances_ephemeral_gb, instances.ephemeral_key_uuid AS instances_ephemeral_key_uuid, instances.host AS instances_host, instances.node AS instances_node,
  instances.instance_type_id AS instances_instance_type_id, instances.user_data AS instances_user_data, instances.reservation_id AS instances_reservation_id, instances.launched_at AS instances_launched_
  at, instances.terminated_at AS instances_terminated_at, instances.availability_zone AS instances_availability_zone, instances.display_name AS instances_display_name, instances.display_description AS insta
  nces_display_description, instances.launched_on AS instances_launched_on, instances.locked AS instances_locked, instances.locked_by AS instances_locked_by, instances.os_type AS instances_os_type, inst
  ances.architecture AS instances_architecture, instances.vm_mode A
  Sep 15 16:04:40 dbopenstack-VirtualBox devstack@n-api.service[989]: S instances_vm_mode, instances.uuid AS instances_uuid, instances.root_device_name AS instances_root_device_name, instances.default
  _ephemeral_device AS instances_default_ephemeral_device, instances.default_swap_device AS instances_default_swap_device, instances.config_drive AS instances_config_drive, instances.access_ip_v4 AS i
  nstances_access_ip_v4, instances.access_ip_v6 AS instances_access_ip_v6, instances.auto_disk_config AS instances_auto_disk_config, instances.progress AS instances_progress, instances.shutdown_terminat
  e AS instances_shutdown_terminate, instances.disable_terminate AS instances_disable_terminate, instances.cell_name AS instances_cell_name, instances.cleaned AS instances_cleaned \nFROM instances \n
  WHERE instances.deleted = %(deleted_1)s AND (instances.vm_state != %(vm_state_1)s OR instances.vm_state IS NULL) AND instances.project_id = %(project_id_1)s AND (instances.display_name 
  REGEXP %(display_name_1)s) ORDER BY instances.created_at DESC, instances.id DESC \n LIMIT %(param_1)s) AS anon_1 LEFT OUTER JOIN (security_group_instance_association AS security_group_instance_association_1 
  INNER JOIN security_groups AS security_groups_1 ON security_groups_1.id = security_group_instance_association_1.security_group_id AND security_group_instance_association_1.deleted = %(deleted_2)s AND 
  security_groups_1.deleted = %(deleted_3)s) ON security_group_instance_association_1.instance_uuid = anon_1.instances_uuid AND anon_1.instances_deleted = %(deleted_4)s LEFT OUTER JOIN instance_info_caches 
  AS instance_info_caches_1 ON instance_info_caches_1.instance_uuid = anon_1.instances_uuid ORDER BY anon_1.instances_created_at DESC, anon_1.instances_id DESC'] [parameters: {u'deleted_3': 0, u'
  display_name_1': u'', u'deleted_4': 0, u'param_1': 1000, u'deleted_2': 0, u'deleted_1': 0, u'vm_state_1': 'soft-delete', u'project_id_1': u'038a2813bce843e1a49a512701f17ddf'}]: InternalError:
  (1139, u"Got error 'empty (sub)expression' from regexp")
  Sep 15 16:04:40 dbopenstack-VirtualBox devstack@n-api.service[989]: ERROR oslo_db.sqlalchemy.exc_filters Traceback (most recent call last):
  Sep 15 16:04:40 dbopenstack-VirtualBox devstack@n-api.service[989]: ERROR oslo_db.sqlalchemy.exc_filters   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1182, in _execute_context
  Sep 15 16:04:40 dbopenstack-VirtualBox devstack@n-api.service[989]: ERROR oslo_db.sqlalchemy.exc_filters     context)
  Sep 15 16:04:40 dbopenstack-VirtualBox devstack@n-api.service[989]: ERROR oslo_db.sqlalchemy.exc_filters   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 470, in do_execute
  Sep 15 16:04:40 dbopenstack-VirtualBox devstack@n-api.service[989]: ERROR oslo_db.sqlalchemy.exc_filters     cursor.execute(statement, parameters)
  Sep 15 16:04:40 dbopenstack-VirtualBox devstack@n-api.service[989]: ERROR oslo_db.sqlalchemy.exc_filters   File "/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 166, in execute
  Sep 15 16:04:40 dbopenstack-VirtualBox devstack@n-api.service[989]: ERROR oslo_db.sqlalchemy.exc_filters     result = self._query(query)
  Sep 15 16:04:40 dbopenstack-VirtualBox devstack@n-api.service[989]: ERROR oslo_db.sqlalchemy.exc_filters   File "/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 322, in _query
  Sep 15 16:04:40 dbopenstack-VirtualBox devstack@n-api.service[989]: ERROR oslo_db.sqlalchemy.exc_filters     conn.query(q)
  Sep 15 16:04:40 dbopenstack-VirtualBox devstack@n-api.service[989]: ERROR oslo_db.sqlalchemy.exc_filters   File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 856, in query
  Sep 15 16:04:40 dbopenstack-VirtualBox devstack@n-api.service[989]: ERROR oslo_db.sqlalchemy.exc_filters     self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  Sep 15 16:04:40 dbopenstack-VirtualBox devstack@n-api.service[989]: ERROR oslo_db.sqlalchemy.exc_filters   File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1057, in _read_query_result
  Sep 15 16:04:40 dbopenstack-VirtualBox devstack@n-api.service[989]: ERROR oslo_db.sqlalchemy.exc_filters     result.read()
  Sep 15 16:04:40 dbopenstack-VirtualBox devstack@n-api.service[989]: ERROR oslo_db.sqlalchemy.exc_filters   File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1340, in read
  Sep 15 16:04:40 dbopenstack-VirtualBox devstack@n-api.service[989]: ERROR oslo_db.sqlalchemy.exc_filters     first_packet = self.connection._read_packet()
  Sep 15 16:04:40 dbopenstack-VirtualBox devstack@n-api.service[989]: ERROR oslo_db.sqlalchemy.exc_filters   File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1014, in _read_packet
  Sep 15 16:04:40 dbopenstack-VirtualBox devstack@n-api.service[989]: ERROR oslo_db.sqlalchemy.exc_filters     packet.check_error()
  Sep 15 16:04:40 dbopenstack-VirtualBox devstack@n-api.service[989]: ERROR oslo_db.sqlalchemy.exc_filters   File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 393, in check_error
  Sep 15 16:04:40 dbopenstack-VirtualBox devstack@n-api.service[989]: ERROR oslo_db.sqlalchemy.exc_filters     err.raise_mysql_exception(self._data)
  Sep 15 16:04:40 dbopenstack-VirtualBox devstack@n-api.service[989]: ERROR oslo_db.sqlalchemy.exc_filters   File "/usr/local/lib/python2.7/dist-packages/pymysql/err.py", line 107, in raise_mysql_exception
  Sep 15 16:04:40 dbopenstack-VirtualBox devstack@n-api.service[989]: ERROR oslo_db.sqlalchemy.exc_filters     raise errorclass(errno, errval)
  Sep 15 16:04:40 dbopenstack-VirtualBox devstack@n-api.service[989]: ERROR oslo_db.sqlalchemy.exc_filters InternalError: (1139, u"Got error 'empty (sub)expression' from regexp")
  Sep 15 16:04:40 dbopenstack-VirtualBox devstack@n-api.service[989]: ERROR oslo_db.sqlalchemy.exc_filters

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


References