notification agent needs to gracefully stop()

Bug #1418793 reported by ZhiQiang Fan
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Ceilometer
Fix Released
Low
ZhiQiang Fan

Bug Description

run devstack with master branch, and agent-notification prints the following message,

at least, the stop() method of agent-notification should be fixed to correctly call super.stop()

2015-02-06 10:11:07.000 83274 DEBUG ceilometer.pipeline [-] Pipeline config file: None _setup_pipeline_manager /opt/stack/ceilometer/ceilometer/pipeline.py:664
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/eventlet/hubs/hub.py", line 457, in fire_timers
    timer()
  File "/usr/local/lib/python2.7/dist-packages/eventlet/hubs/timer.py", line 58, in __call__
    cb(*args, **kw)
  File "/usr/local/lib/python2.7/dist-packages/eventlet/greenthread.py", line 214, in main
    result = function(*args, **kwargs)
  File "/opt/stack/ceilometer/ceilometer/openstack/common/service.py", line 491, in run_service
    service.start()
  File "/opt/stack/ceilometer/ceilometer/notification.py", line 92, in start
    self.event_pipeline_manager = pipeline.setup_event_pipeline()
  File "/opt/stack/ceilometer/ceilometer/pipeline.py", line 682, in setup_event_pipeline
    return _setup_pipeline_manager(cfg_file, transformer_manager, EVENT_TYPE)
  File "/opt/stack/ceilometer/ceilometer/pipeline.py", line 666, in _setup_pipeline_manager
    with open(cfg_file) as fap:
TypeError: coercing to Unicode: need string or buffer, NoneType found
2015-02-06 10:11:07.001 83274 ERROR ceilometer.openstack.common.threadgroup [-] coercing to Unicode: need string or buffer, NoneType found
2015-02-06 10:11:07.001 83274 TRACE ceilometer.openstack.common.threadgroup Traceback (most recent call last):
2015-02-06 10:11:07.001 83274 TRACE ceilometer.openstack.common.threadgroup File "/opt/stack/ceilometer/ceilometer/openstack/common/threadgroup.py", line 145, in wait
2015-02-06 10:11:07.001 83274 TRACE ceilometer.openstack.common.threadgroup x.wait()
2015-02-06 10:11:07.001 83274 TRACE ceilometer.openstack.common.threadgroup File "/opt/stack/ceilometer/ceilometer/openstack/common/threadgroup.py", line 47, in wait
2015-02-06 10:11:07.001 83274 TRACE ceilometer.openstack.common.threadgroup return self.thread.wait()
2015-02-06 10:11:07.001 83274 TRACE ceilometer.openstack.common.threadgroup File "/usr/local/lib/python2.7/dist-packages/eventlet/greenthread.py", line 175, in wait
2015-02-06 10:11:07.001 83274 TRACE ceilometer.openstack.common.threadgroup return self._exit_event.wait()
2015-02-06 10:11:07.001 83274 TRACE ceilometer.openstack.common.threadgroup File "/usr/local/lib/python2.7/dist-packages/eventlet/event.py", line 121, in wait
2015-02-06 10:11:07.001 83274 TRACE ceilometer.openstack.common.threadgroup return hubs.get_hub().switch()
2015-02-06 10:11:07.001 83274 TRACE ceilometer.openstack.common.threadgroup File "/usr/local/lib/python2.7/dist-packages/eventlet/hubs/hub.py", line 294, in switch
2015-02-06 10:11:07.001 83274 TRACE ceilometer.openstack.common.threadgroup return self.greenlet.switch()
2015-02-06 10:11:07.001 83274 TRACE ceilometer.openstack.common.threadgroup File "/usr/local/lib/python2.7/dist-packages/eventlet/greenthread.py", line 214, in main
2015-02-06 10:11:07.001 83274 TRACE ceilometer.openstack.common.threadgroup result = function(*args, **kwargs)
2015-02-06 10:11:07.001 83274 TRACE ceilometer.openstack.common.threadgroup File "/opt/stack/ceilometer/ceilometer/openstack/common/service.py", line 491, in run_service
2015-02-06 10:11:07.001 83274 TRACE ceilometer.openstack.common.threadgroup service.start()
2015-02-06 10:11:07.001 83274 TRACE ceilometer.openstack.common.threadgroup File "/opt/stack/ceilometer/ceilometer/notification.py", line 92, in start
2015-02-06 10:11:07.001 83274 TRACE ceilometer.openstack.common.threadgroup self.event_pipeline_manager = pipeline.setup_event_pipeline()
2015-02-06 10:11:07.001 83274 TRACE ceilometer.openstack.common.threadgroup File "/opt/stack/ceilometer/ceilometer/pipeline.py", line 682, in setup_event_pipeline
2015-02-06 10:11:07.001 83274 TRACE ceilometer.openstack.common.threadgroup return _setup_pipeline_manager(cfg_file, transformer_manager, EVENT_TYPE)
2015-02-06 10:11:07.001 83274 TRACE ceilometer.openstack.common.threadgroup File "/opt/stack/ceilometer/ceilometer/pipeline.py", line 666, in _setup_pipeline_manager
2015-02-06 10:11:07.001 83274 TRACE ceilometer.openstack.common.threadgroup with open(cfg_file) as fap:
2015-02-06 10:11:07.001 83274 TRACE ceilometer.openstack.common.threadgroup TypeError: coercing to Unicode: need string or buffer, NoneType found
2015-02-06 10:11:07.001 83274 TRACE ceilometer.openstack.common.threadgroup
2015-02-06 10:11:07.002 83274 CRITICAL ceilometer [-] AttributeError: 'NotificationService' object has no attribute 'partition_coordinator'
2015-02-06 10:11:07.002 83274 TRACE ceilometer Traceback (most recent call last):
2015-02-06 10:11:07.002 83274 TRACE ceilometer File "/usr/local/bin/ceilometer-agent-notification", line 9, in <module>
2015-02-06 10:11:07.002 83274 TRACE ceilometer load_entry_point('ceilometer==2015.1.dev125', 'console_scripts', 'ceilometer-agent-notification')()
2015-02-06 10:11:07.002 83274 TRACE ceilometer File "/opt/stack/ceilometer/ceilometer/cmd/agent_notification.py", line 28, in main
2015-02-06 10:11:07.002 83274 TRACE ceilometer launcher.wait()
2015-02-06 10:11:07.002 83274 TRACE ceilometer File "/opt/stack/ceilometer/ceilometer/openstack/common/service.py", line 384, in wait
2015-02-06 10:11:07.002 83274 TRACE ceilometer self._respawn_children()
2015-02-06 10:11:07.002 83274 TRACE ceilometer File "/opt/stack/ceilometer/ceilometer/openstack/common/service.py", line 372, in _respawn_children
2015-02-06 10:11:07.002 83274 TRACE ceilometer self._start_child(wrap)
2015-02-06 10:11:07.002 83274 TRACE ceilometer File "/opt/stack/ceilometer/ceilometer/openstack/common/service.py", line 313, in _start_child
2015-02-06 10:11:07.002 83274 TRACE ceilometer status, signo = self._child_wait_for_exit_or_signal(launcher)
2015-02-06 10:11:07.002 83274 TRACE ceilometer File "/opt/stack/ceilometer/ceilometer/openstack/common/service.py", line 271, in _child_wait_for_exit_or_signal
2015-02-06 10:11:07.002 83274 TRACE ceilometer launcher.stop()
2015-02-06 10:11:07.002 83274 TRACE ceilometer File "/opt/stack/ceilometer/ceilometer/openstack/common/service.py", line 125, in stop
2015-02-06 10:11:07.002 83274 TRACE ceilometer self.services.stop()
2015-02-06 10:11:07.002 83274 TRACE ceilometer File "/opt/stack/ceilometer/ceilometer/openstack/common/service.py", line 461, in stop
2015-02-06 10:11:07.002 83274 TRACE ceilometer service.stop()
2015-02-06 10:11:07.002 83274 TRACE ceilometer File "/opt/stack/ceilometer/ceilometer/notification.py", line 204, in stop
2015-02-06 10:11:07.002 83274 TRACE ceilometer self.partition_coordinator.leave_group(self.group_id)
2015-02-06 10:11:07.002 83274 TRACE ceilometer AttributeError: 'NotificationService' object has no attribute 'partition_coordinator'
2015-02-06 10:11:07.002 83274 TRACE ceilometer
2015-02-06 10:11:07.063 83263 INFO ceilometer.openstack.common.service [-] Child 83274 exited with status 1
2015-02-06 10:11:07.063 83263 INFO ceilometer.openstack.common.service [-] Forking too fast, sleeping

ZhiQiang Fan (aji-zqfan)
Changed in ceilometer:
assignee: nobody → ZhiQiang Fan (aji-zqfan)
description: updated
Revision history for this message
ZhiQiang Fan (aji-zqfan) wrote :

the pipeline configuration issue is fixed by https://review.openstack.org/152525

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to ceilometer (master)

Fix proposed to branch: master
Review: https://review.openstack.org/153491

Changed in ceilometer:
status: New → In Progress
gordon chung (chungg)
Changed in ceilometer:
importance: Undecided → Low
Eoghan Glynn (eglynn)
Changed in ceilometer:
milestone: none → kilo-3
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to ceilometer (master)

Reviewed: https://review.openstack.org/153491
Committed: https://git.openstack.org/cgit/openstack/ceilometer/commit/?id=e5e4ac9997715049076d1516ef07acf1d69c4a06
Submitter: Jenkins
Branch: master

commit e5e4ac9997715049076d1516ef07acf1d69c4a06
Author: ZhiQiang Fan <email address hidden>
Date: Fri Feb 6 16:25:01 2015 +0800

    correctly leave group when process is stopped

    ceilometer.notification.NotificationService.stop() use attribute before
    it is initialized, it will raise exception when start() fails.

    This patch fixes it by putting initialization in __init__().

    Note, also adds coordinator.stop() when service is stopped for
    polling agents.

    Change-Id: Ied2f086e1f50950b430095ae7ee89036fd4a89d9
    Closes-Bug: #1418793

Changed in ceilometer:
status: In Progress → Fix Committed
Thierry Carrez (ttx)
Changed in ceilometer:
status: Fix Committed → Fix Released
Thierry Carrez (ttx)
Changed in ceilometer:
milestone: kilo-3 → 2015.1.0
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.