← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1781880] Re: nova service-list for new compute service causes TypeError with servicegroup_driver mc

 

Reviewed:  https://review.openstack.org/583936
Committed: https://git.openstack.org/cgit/openstack/nova/commit/?id=0f4e5c442c0ab446274979dafda873c1e1c20585
Submitter: Zuul
Branch:    master

commit 0f4e5c442c0ab446274979dafda873c1e1c20585
Author: Kevin_Zheng <zhengzhenyu@xxxxxxxxxx>
Date:   Thu Jul 19 19:09:31 2018 +0800

    Fix service list for disabled compute using MC driver
    
    In 0df91a7f799060cd2e9b8a0adac1efacb974bcb3 a comparison
    between ``updated_at`` field from services table and update time
    from memcache was added if the servergroup_driver is set to be
    mc.
    
    This could be problematic if servergroup_driver=mc and
    ``[DEFAULT]/enable_new_services`` option in /etc/nova/nova.conf
    is set to be ``False`` at the same time, as the ``updated_at``
    field will always be ``Null`` in services record.
    
    This patch fixes the bug by returning ``updated_time_in_mc`` instead
    under the above mentioned scenario.
    
    Closes-Bug: #1781880
    
    Change-Id: I27160140cbccf3e6914aed2dcff54d547e446c1f


** 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/1781880

Title:
  nova service-list for new compute service causes TypeError with
  servicegroup_driver mc

Status in OpenStack Compute (nova):
  Fix Released
Status in OpenStack Compute (nova) pike series:
  Confirmed
Status in OpenStack Compute (nova) queens series:
  Confirmed
Status in OpenStack Compute (nova) rocky series:
  Confirmed

Bug description:
  Description
  ===========
  nova service-list for new compute service causes TypeError.
  Related commit: https://git.openstack.org/cgit/openstack/nova/commit/?id=0df91a7f799060cd2e9b8a0adac1efacb974bcb3

  Steps to reproduce
  ==================
  1. Set servicegroup_driver=mc and enable_new_services=False in /etc/nova/nova.conf
  2. Add new compute host, start nova-compute service. Service becomes disabled, and field updated_at is NULL in nova.services table in DB.
  3. Execute nova service-list.

  Expected result
  ===============
  List of the nova services

  Actual result
  =============
  ERROR (ClientException): Unexpected API Error. Please report this at http://bugs.launchpad.net/nova/ and attach the Nova API log if possible.
  <type 'exceptions.TypeError'> (HTTP 500) (Request-ID: req-cbd9f4ca-7634-4378-8dcc-5a03d9d4193f)

  Environment
  ===========
  OpenStack Pike

  Logs
  ==============
  Trace in the nova-api-os-compute logs:

  ERROR nova.api.openstack.extensions [req-6034517c-bc29-4ebe-931e-8726fd934bee e05fb82b34cd4265a839f2482debb973 b5d263d6d7c24b84b335f4f00ae6d7c9] Unexpected exception in API method: TypeError: can't compare datetime.datetime to NoneType
  TRACE nova.api.openstack.extensions Traceback (most recent call last):
  TRACE nova.api.openstack.extensions   File "/usr/lib/python2.7/dist-packages/nova/api/openstack/extensions.py", line 336, in wrapped
  TRACE nova.api.openstack.extensions     return f(*args, **kwargs)
  TRACE nova.api.openstack.extensions   File "/usr/lib/python2.7/dist-packages/nova/api/openstack/compute/services.py", line 261, in index
  TRACE nova.api.openstack.extensions     _services = self._get_services_list(req, ['forced_down'])
  TRACE nova.api.openstack.extensions   File "/usr/lib/python2.7/dist-packages/nova/api/openstack/compute/services.py", line 115, in _get_services_list
  TRACE nova.api.openstack.extensions     for svc in _services]
  TRACE nova.api.openstack.extensions   File "/usr/lib/python2.7/dist-packages/nova/api/openstack/compute/services.py", line 83, in _get_service_detail
  TRACE nova.api.openstack.extensions     updated_time = self.servicegroup_api.get_updated_time(svc)
  TRACE nova.api.openstack.extensions   File "/usr/lib/python2.7/dist-packages/nova/servicegroup/api.py", line 84, in get_updated_time
  TRACE nova.api.openstack.extensions     return self._driver.updated_time(member)
  TRACE nova.api.openstack.extensions   File "/usr/lib/python2.7/dist-packages/nova/servicegroup/drivers/mc.py", line 81, in updated_time
  TRACE nova.api.openstack.extensions     if updated_time_in_db <= updated_time_in_mc:
  TRACE nova.api.openstack.extensions TypeError: can't compare datetime.datetime to NoneType
  TRACE nova.api.openstack.extensions
  2018-07-16 11:40:16,437.437 2096 INFO nova.api.openstack.wsgi [req-6034517c-bc29-4ebe-931e-8726fd934bee e05fb82b34cd4265a839f2482debb973 b5d263d6d7c24b84b335f4f00ae6d7c9] 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.TypeError'>

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


References