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 <email address hidden>
Date: Tue Sep 19 02:58:27 2017 +0000
Merge "Updated from global requirements"
devstack:
commit 6c87f363a1255270a3711b3fe7a065cc693164b9
Merge: f60babc 1d141da
Author: Jenkins <email address hidden>
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 <email address hidden>[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 <email address hidden>[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 <email address hidden>[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 <email address hidden>[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 <email address hidden>[989]: ERROR oslo_db.sqlalchemy.exc_filters Traceback (most recent call last):
Sep 15 16:04:40 dbopenstack-VirtualBox <email address hidden>[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 <email address hidden>[989]: ERROR oslo_db.sqlalchemy.exc_filters context)
Sep 15 16:04:40 dbopenstack-VirtualBox <email address hidden>[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 <email address hidden>[989]: ERROR oslo_db.sqlalchemy.exc_filters cursor.execute(statement, parameters)
Sep 15 16:04:40 dbopenstack-VirtualBox <email address hidden>[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 <email address hidden>[989]: ERROR oslo_db.sqlalchemy.exc_filters result = self._query(query)
Sep 15 16:04:40 dbopenstack-VirtualBox <email address hidden>[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 <email address hidden>[989]: ERROR oslo_db.sqlalchemy.exc_filters conn.query(q)
Sep 15 16:04:40 dbopenstack-VirtualBox <email address hidden>[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 <email address hidden>[989]: ERROR oslo_db.sqlalchemy.exc_filters self._affected_rows = self._read_query_result(unbuffered=unbuffered)
Sep 15 16:04:40 dbopenstack-VirtualBox <email address hidden>[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 <email address hidden>[989]: ERROR oslo_db.sqlalchemy.exc_filters result.read()
Sep 15 16:04:40 dbopenstack-VirtualBox <email address hidden>[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 <email address hidden>[989]: ERROR oslo_db.sqlalchemy.exc_filters first_packet = self.connection._read_packet()
Sep 15 16:04:40 dbopenstack-VirtualBox <email address hidden>[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 <email address hidden>[989]: ERROR oslo_db.sqlalchemy.exc_filters packet.check_error()
Sep 15 16:04:40 dbopenstack-VirtualBox <email address hidden>[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 <email address hidden>[989]: ERROR oslo_db.sqlalchemy.exc_filters err.raise_mysql_exception(self._data)
Sep 15 16:04:40 dbopenstack-VirtualBox <email address hidden>[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 <email address hidden>[989]: ERROR oslo_db.sqlalchemy.exc_filters raise errorclass(errno, errval)
Sep 15 16:04:40 dbopenstack-VirtualBox <email address hidden>[989]: ERROR oslo_db.sqlalchemy.exc_filters InternalError: (1139, u"Got error 'empty (sub)expression' from regexp")
Sep 15 16:04:40 dbopenstack-VirtualBox <email address hidden>[989]: ERROR oslo_db.sqlalchemy.exc_filters
Fix proposed to branch: master /review. openstack. org/506585
Review: https:/