Reviewed: https://review.openstack.org/456872 Committed: https://git.openstack.org/cgit/openstack/nova/commit/?id=c4820305d2f9ee8d62bcc708baf3fa6dfe7ca960 Submitter: Jenkins Branch: master
commit c4820305d2f9ee8d62bcc708baf3fa6dfe7ca960 Author: Kevin_Zheng <[email protected]> Date: Fri Apr 14 11:57:59 2017 +0800 Use deepcopy when process filters in db api In db API when we process filters, we didn't use deepcopy. In cases of "tags" and "not-tags" we used pop to get the first tag, filtered out results, and then joined with other tags for later filtering. When we did pop(), the original value was deleted, the key "tags"/"not-tags" remains. In the cell scenario, both single cell(we will query cell0 and the other cell) and multicell, as we have to query all the cells in a loop and the tags list in the filter will keep popping, this will lead to either a HTTP 500 error(popping from an empty list) or incorrect result(when number of tags in the list is larger than cell number, no HTTP 500 will show, but the filter results for each cell will be different as each loop will pop one tag). closes-bug: #1682693 Change-Id: Ia2738dd0c7d1842b68c83d0a9e75e26b2f8d492a ** 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/1682693 Title: tags and not-tags cannot work properly Status in OpenStack Compute (nova): Fix Released Status in OpenStack Compute (nova) newton series: In Progress Status in OpenStack Compute (nova) ocata series: In Progress Bug description: When there is no tags in the system and user uses "nova list --not-tags xxx", HTTP 500 will return: root@SZX1000291918:/var/log/nova# nova list --not-tags 123 /usr/local/lib/python2.7/dist-packages/novaclient/client.py:278: UserWarning: The 'tenant_id' argument is deprecated in Ocata and its use may result in errors in future releases. As 'project_id' is provided, the 'tenant_id' argument will be ignored. warnings.warn(msg) ERROR (ClientException): Unexpected API Error. Please report this at http://bugs.launchpad.net/nova/ and attach the Nova API log if possible. <type 'exceptions.IndexError'> (HTTP 500) (Request-ID: req-225940e7-1976-4ec9-8970-a8c2b4b103ea) nova-api Logs: 2017-04-14 09:34:29.952 111211 DEBUG oslo_db.sqlalchemy.engines [req-225940e7-1976-4ec9-8970-a8c2b4b103ea f9e4d94bbfbd4cf1b774108650faa855 d4fd94accf2a4718b2ec8100e4e2e5f1 - default default] MySQL server mode set to STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION _check_effective_sql_mode /usr/local/lib/python2.7/dist-packages/oslo_db/sqlalchemy/engines.py:260 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions [req-225940e7-1976-4ec9-8970-a8c2b4b103ea f9e4d94bbfbd4cf1b774108650faa855 d4fd94accf2a4718b2ec8100e4e2e5f1 - default default] Unexpected exception in API method 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions Traceback (most recent call last): 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions File "/opt/stack/nova/nova/api/openstack/extensions.py", line 336, in wrapped 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions return f(*args, **kwargs) 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions File "/opt/stack/nova/nova/api/validation/__init__.py", line 181, in wrapper 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions return func(*args, **kwargs) 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions File "/opt/stack/nova/nova/api/validation/__init__.py", line 181, in wrapper 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions return func(*args, **kwargs) 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions File "/opt/stack/nova/nova/api/openstack/compute/servers.py", line 167, in detail 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions servers = self._get_servers(req, is_detail=True) 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions File "/opt/stack/nova/nova/api/openstack/compute/servers.py", line 310, in _get_servers 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions sort_keys=sort_keys, sort_dirs=sort_dirs) 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions File "/opt/stack/nova/nova/compute/api.py", line 2572, in get_all 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions sort_dirs=sort_dirs) 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions File "/opt/stack/nova/nova/compute/api.py", line 2657, in _get_instances_by_filters_all_cells 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions **kwargs) 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions File "/opt/stack/nova/nova/compute/api.py", line 2688, in _get_instances_by_filters 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions expected_attrs=fields, sort_keys=sort_keys, sort_dirs=sort_dirs) 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions File "/usr/local/lib/python2.7/dist-packages/oslo_versionedobjects/base.py", line 184, in wrapper 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions result = fn(cls, context, *args, **kwargs) 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions File "/opt/stack/nova/nova/objects/instance.py", line 1220, in get_by_filters 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions use_slave=use_slave, sort_keys=sort_keys, sort_dirs=sort_dirs) 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions File "/opt/stack/nova/nova/db/sqlalchemy/api.py", line 236, in wrapper 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions return f(*args, **kwargs) 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions File "/opt/stack/nova/nova/objects/instance.py", line 1204, in _get_by_filters_impl 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions sort_keys=sort_keys, sort_dirs=sort_dirs) 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions File "/opt/stack/nova/nova/db/api.py", line 763, in instance_get_all_by_filters_sort 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions sort_dirs=sort_dirs) 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions File "/opt/stack/nova/nova/db/sqlalchemy/api.py", line 180, in wrapper 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions return f(*args, **kwargs) 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions File "/opt/stack/nova/nova/db/sqlalchemy/api.py", line 281, in wrapped 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions return f(context, *args, **kwargs) 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions File "/opt/stack/nova/nova/db/sqlalchemy/api.py", line 2211, in instance_get_all_by_filters_sort 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions first_tag = tags.pop(0) 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions IndexError: pop from empty list 2017-04-14 09:34:29.955 111211 ERROR nova.api.openstack.extensions 2017-04-14 09:34:29.958 111211 INFO nova.api.openstack.wsgi [req-225940e7-1976-4ec9-8970-a8c2b4b103ea f9e4d94bbfbd4cf1b774108650faa855 d4fd94accf2a4718b2ec8100e4e2e5f1 - default default] HTTP exception thrown: Unexpected API Error. Please report this at http://bugs.launchpad.net/nova/ and attach the Nova API log if possible. <type 'exceptions.IndexError'> 2017-04-14 09:34:29.959 111211 DEBUG nova.api.openstack.wsgi [req-225940e7-1976-4ec9-8970-a8c2b4b103ea f9e4d94bbfbd4cf1b774108650faa855 d4fd94accf2a4718b2ec8100e4e2e5f1 - default default] Returning 500 to user: Unexpected API Error. Please report this at http://bugs.launchpad.net/nova/ and attach the Nova API log if possible. <type 'exceptions.IndexError'> __call__ /opt/stack/nova/nova/api/openstack/wsgi.py:1041 2017-04-14 09:34:29.960 111211 INFO nova.osapi_compute.wsgi.server [req-225940e7-1976-4ec9-8970-a8c2b4b103ea f9e4d94bbfbd4cf1b774108650faa855 d4fd94accf2a4718b2ec8100e4e2e5f1 - default default] 10.229.45.145 "GET /v2.1/servers/detail?not-tags=123 HTTP/1.1" status: 500 len: 563 time: 0.1029530 To manage notifications about this bug go to: https://bugs.launchpad.net/nova/+bug/1682693/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : [email protected] Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp

