← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1997090] [NEW] VMs listing with sort keys throws exception when trying to compare None values

 

Public bug reported:

The nova-api raises exception on attempt to get VMs sorted by i.e.
task_state key.

Here are steps-to-reproduce:

- create two VMs: vm1 in ACTIVE state (cell1) and vm2 in ERROR state (cell0)
- try to list servers sorted by sort_key=task_state

[root@node0 ~]# openstack server create vm1 --network net1 --flavor m1.tiny --image cirros-0.5.2-x86_64-disk
[root@node0 ~]# openstack server create vm2 --network net1 --flavor m1.xlarge --image cirros-0.5.2-x86_64-disk
[root@node0 ~]# openstack server list -f json --long -c ID -c 'Task State' -c 'Status'
[
  {
    "ID": "3a3927c4-9f67-4356-8a3e-a3e58cf0744e",
    "Status": "ERROR",
    "Task State": null
  },
  {
    "ID": "9af631ec-3e59-45da-bafa-85141e3707da",
    "Status": "ACTIVE",
    "Task State": null
  }
]
[root@node0 ~]#
[root@node0 ~]# curl -k -H "x-auth-token: $s" 'http://10.136.16.186/compute/v2.1/servers/detail?sort_key=task_state'
{"computeFault": {"code": 500, "message": "Unexpected API Error. Please report this at http://bugs.launchpad.net/nova/ and attach the Nova API log if possible.\n<class 'TypeError'>"}}[root@node0 ~]#

Traceback:

Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi [None req-59ce5d12-1c84-4c45-8b10-da863b721d6f demo admin] Unexpected exception in API method: TypeError: '<' not supported between instances of 'NoneType' and 'NoneType'
Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi Traceback (most recent call last):
Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi   File "/opt/stack/nova/nova/api/openstack/wsgi.py", line 664, in wrapped
Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi     return f(*args, **kwargs)
Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi   File "/opt/stack/nova/nova/api/validation/__init__.py", line 192, in wrapper
Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi     return func(*args, **kwargs)
Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi   File "/opt/stack/nova/nova/api/validation/__init__.py", line 192, in wrapper
Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi     return func(*args, **kwargs)
Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi   File "/opt/stack/nova/nova/api/validation/__init__.py", line 192, in wrapper
Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi     return func(*args, **kwargs)
Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi   [Previous line repeated 2 more times]
Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi   File "/opt/stack/nova/nova/api/openstack/compute/servers.py", line 143, in detail
Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi     servers = self._get_servers(req, is_detail=True)
Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi   File "/opt/stack/nova/nova/api/openstack/compute/servers.py", line 327, in _get_servers
Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi     instance_list = self.compute_api.get_all(elevated or context,
Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi   File "/opt/stack/nova/nova/compute/api.py", line 3140, in get_all
Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi     insts, down_cell_uuids = instance_list.get_instance_objects_sorted(
Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi   File "/opt/stack/nova/nova/compute/instance_list.py", line 176, in get_instance_objects_sorted
Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi     instance_list = instance_obj._make_instance_list(ctx,
Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi   File "/opt/stack/nova/nova/objects/instance.py", line 1287, in _make_instance_list
Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi     for db_inst in db_inst_list:
Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi   File "/opt/stack/nova/nova/compute/multi_cell_list.py", line 411, in get_records_sorted
Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi     item = next(feeder)
Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi   File "/usr/lib64/python3.9/heapq.py", line 353, in merge
Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi     _heapify(h)
Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi   File "/opt/stack/nova/nova/compute/multi_cell_list.py", line 84, in __lt__
Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi     r = self._sort_ctx.compare_records(self._db_record,
Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi   File "/opt/stack/nova/nova/compute/multi_cell_list.py", line 45, in compare_records
Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi     if rec1[skey] < rec2[skey]:
Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi TypeError: '<' not supported between instances of 'NoneType' and 'NoneType'

** Affects: nova
     Importance: Undecided
         Status: In Progress

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

Title:
  VMs listing with sort keys throws exception when trying to compare
  None values

Status in OpenStack Compute (nova):
  In Progress

Bug description:
  The nova-api raises exception on attempt to get VMs sorted by i.e.
  task_state key.

  Here are steps-to-reproduce:

  - create two VMs: vm1 in ACTIVE state (cell1) and vm2 in ERROR state (cell0)
  - try to list servers sorted by sort_key=task_state

  [root@node0 ~]# openstack server create vm1 --network net1 --flavor m1.tiny --image cirros-0.5.2-x86_64-disk
  [root@node0 ~]# openstack server create vm2 --network net1 --flavor m1.xlarge --image cirros-0.5.2-x86_64-disk
  [root@node0 ~]# openstack server list -f json --long -c ID -c 'Task State' -c 'Status'
  [
    {
      "ID": "3a3927c4-9f67-4356-8a3e-a3e58cf0744e",
      "Status": "ERROR",
      "Task State": null
    },
    {
      "ID": "9af631ec-3e59-45da-bafa-85141e3707da",
      "Status": "ACTIVE",
      "Task State": null
    }
  ]
  [root@node0 ~]#
  [root@node0 ~]# curl -k -H "x-auth-token: $s" 'http://10.136.16.186/compute/v2.1/servers/detail?sort_key=task_state'
  {"computeFault": {"code": 500, "message": "Unexpected API Error. Please report this at http://bugs.launchpad.net/nova/ and attach the Nova API log if possible.\n<class 'TypeError'>"}}[root@node0 ~]#

  Traceback:

  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi [None req-59ce5d12-1c84-4c45-8b10-da863b721d6f demo admin] Unexpected exception in API method: TypeError: '<' not supported between instances of 'NoneType' and 'NoneType'
  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi Traceback (most recent call last):
  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi   File "/opt/stack/nova/nova/api/openstack/wsgi.py", line 664, in wrapped
  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi     return f(*args, **kwargs)
  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi   File "/opt/stack/nova/nova/api/validation/__init__.py", line 192, in wrapper
  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi     return func(*args, **kwargs)
  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi   File "/opt/stack/nova/nova/api/validation/__init__.py", line 192, in wrapper
  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi     return func(*args, **kwargs)
  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi   File "/opt/stack/nova/nova/api/validation/__init__.py", line 192, in wrapper
  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi     return func(*args, **kwargs)
  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi   [Previous line repeated 2 more times]
  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi   File "/opt/stack/nova/nova/api/openstack/compute/servers.py", line 143, in detail
  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi     servers = self._get_servers(req, is_detail=True)
  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi   File "/opt/stack/nova/nova/api/openstack/compute/servers.py", line 327, in _get_servers
  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi     instance_list = self.compute_api.get_all(elevated or context,
  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi   File "/opt/stack/nova/nova/compute/api.py", line 3140, in get_all
  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi     insts, down_cell_uuids = instance_list.get_instance_objects_sorted(
  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi   File "/opt/stack/nova/nova/compute/instance_list.py", line 176, in get_instance_objects_sorted
  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi     instance_list = instance_obj._make_instance_list(ctx,
  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi   File "/opt/stack/nova/nova/objects/instance.py", line 1287, in _make_instance_list
  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi     for db_inst in db_inst_list:
  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi   File "/opt/stack/nova/nova/compute/multi_cell_list.py", line 411, in get_records_sorted
  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi     item = next(feeder)
  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi   File "/usr/lib64/python3.9/heapq.py", line 353, in merge
  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi     _heapify(h)
  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi   File "/opt/stack/nova/nova/compute/multi_cell_list.py", line 84, in __lt__
  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi     r = self._sort_ctx.compare_records(self._db_record,
  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi   File "/opt/stack/nova/nova/compute/multi_cell_list.py", line 45, in compare_records
  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi     if rec1[skey] < rec2[skey]:
  Nov 18 09:59:09 node0 devstack@n-api.service[1156072]: ERROR nova.api.openstack.wsgi TypeError: '<' not supported between instances of 'NoneType' and 'NoneType'

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