nova-compute stop report state after system time changed
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
New
|
Undecided
|
Charlotte Han |
Bug Description
Description
===========
On compute node,if system time changed by NTP or using cmd "date -s",change time from 14:00:00 to 12:00:00 for example,the nova-compute service will stop reporting state to controller. Then nova service-list show the nova-compute service will be down.
In fact other periodic task such as _sync_power_states, also stopped.
I think system time change should not effect nova-compute.
Steps to reproduce
==================
It is 14:00:00 now for example, change system time to 12:00:00
$ date -s 12:00:00
then we can find there is no log in nova-compute.log for a long time.
and nova service-list show the service is down.
+------
| Id | Binary | Host | Zone | Status | State | Updated_at | Disabled Reason | Forced down |
+------
| 3d0ea985-
Expected result
===============
nova service-list show nova-compute service still up.
Actual result
=============
nova service-list show the nova-compute service is down.
Environment
===========
openstack: Pike
python: python2.7
hypervisor: libvirt + KVM
Changed in nova: | |
assignee: | nobody → Charlotte Han (hanrong) |
[root@nail-5300-2 oslo_service]# /usr/bin/python2 /usr/bin/ nova-compute python2. 7/site- packages/ eventlet/ hubs/__ init__. py(115) get_hub( ) python2. 7/site- packages/ eventlet/ hubs/__ init__. py(70)use_ hub() bin/nova- compute( 6)<module> () lib/python2. 7/site- packages/ nova/cmd/ compute. py(28)< module> () lib/python2. 7/site- packages/ nova/cmd/ common. py(28)< module> () lib/python2. 7/site- packages/ nova/conf/ __init_ _.py(27) <module> () lib/python2. 7/site- packages/ nova/conf/ cinder. py(16)< module> () lib/python2. 7/site- packages/ keystoneauth1/ loading/ __init_ _.py(13) <module> () loading import adapter lib/python2. 7/site- packages/ keystoneauth1/ loading/ adapter. py(13)< module> () lib/python2. 7/site- packages/ keystoneauth1/ adapter. py(18)< module> () lib/python2. 7/site- packages/ keystoneauth1/ session. py(26)< module> () lib/python2. 7/site- packages/ requests/ __init_ _.py(52) <module> () urllib3. contrib import pyopenssl lib/python2. 7/site- packages/ requests/ packages/ __init_ _.py(27) <module> () lib/python2. 7/site- packages/ requests/ packages/ urllib3/ __init_ _.py(8) <module> () lib/python2. 7/site- packages/ requests/ packages/ urllib3/ connectionpool. py(35)< module> () lib/python2. 7/site- packages/ requests/ packages/ urllib3/ connection. py(44)< module> () lib/python2. 7/site- packages/ requests/ packages/ urllib3/ util/__ init__. py(3)<module> () dropped lib/python2. 7/site- packages/ requests/ packages/ urllib3/ util/connection .py(144) <module> () lib/python2. 7/site- packages/ requests/ packages/ urllib3/ util/connection .py(134) _has_ipv6( ) socket( socket. AF_INET6) lib/python2. 7/site- packages/ eventlet/ greenio/ base.py( 133)__init_ _() opened( fd.fileno( )) lib/python2. 7/site- packages/ eventlet/ hubs/__ init__. py(193) notify_ opened( ) lib/python2. 7/site- packages/ eventlet/ hubs/__ init__. py(115) get_hub( ) python2. 7/site- packages/ eventlet/ hubs/__ init__. py(70)use_ hub() 'EVENTLET_ HUB']
> /usr/lib/
-> try:
(Pdb) c
> /usr/lib/
-> if mod is None:
(Pdb) w
/usr/
-> from nova.cmd.compute import main
/usr/
-> from nova.cmd import common as cmd_common
/usr/
-> import nova.conf
/usr/
-> from nova.conf import cinder
/usr/
-> from keystoneauth1 import loading as ks_loading
/usr/
-> from keystoneauth1.
/usr/
-> from keystoneauth1 import adapter
/usr/
-> from keystoneauth1 import session
/usr/
-> import requests
/usr/
-> from .packages.
/usr/
-> from . import urllib3
/usr/
-> from .connectionpool import (
/usr/
-> from .connection import (
/usr/
-> from .util.ssl_ import (
/usr/
-> from .connection import is_connection_
/usr/
-> HAS_IPV6 = _has_ipv6('::1')
/usr/
-> sock = socket.
/usr/
-> notify_
/usr/
-> hub = get_hub()
/usr/
-> try:
> /usr/lib/
-> if mod is None:
(Pdb) os.environ[
*** KeyError: 'EVENTLET_HUB'
(Pdb)
os.environ[ 'EVENTLET_ HUB'] should be 'oslo_service: service_ hub' when get_hub function was used for the first time.