ceilometer-acompute, ceilometer-acentral and ceilometer-collector fail to start with no attribute found

Bug #1075463 reported by Jiajun-xu
16
This bug affects 3 people
Affects Status Importance Assigned to Milestone
Ceilometer
Fix Released
Critical
Lianhao Lu
oslo-incubator
Fix Released
Undecided
Lianhao Lu
Grizzly
Fix Released
Undecided
Lianhao Lu

Bug Description

With latest commit d78e202b580e39a1bc9c1fea4d031379bc62bc0f, ceilometer-acompute, ceilometer-acentral and ceilometer-collector fail to start. They report following error as below:

For ceilometer-acompute, it reports:

#######
2012-11-06 15:53:45 17195 INFO ceilometer.openstack.common.rpc.common [-] Connected to AMQP server on localhost:5672
2012-11-06 15:53:45 17195 DEBUG ceilometer.openstack.common.rpc.service [-] Creating Consumer connection for Service ceilometer.agent.compute start /opt/stack/ceilometer/ceilometer/openstack/common/rpc/service.py:48
2012-11-06 15:53:45 17195 ERROR ceilometer.openstack.common.loopingcall [-] in looping call
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.loopingcall Traceback (most recent call last):
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.loopingcall File "/opt/stack/ceilometer/ceilometer/openstack/common/loopingcall.py", line 65, in _inner
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.loopingcall self.f(*self.args, **self.kw)
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.loopingcall File "/opt/stack/ceilometer/ceilometer/compute/manager.py", line 79, in periodic_tasks
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.loopingcall for instance in self.resources.instance_get_all_by_host(context):
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.loopingcall File "/opt/stack/ceilometer/ceilometer/compute/resources.py", line 34, in instance_get_all_by_host
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.loopingcall return self.db.instance_get_all_by_host(context, cfg.CONF.host)
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.loopingcall File "/opt/stack/nova/nova/db/api.py", line 626, in instance_get_all_by_host
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.loopingcall return IMPL.instance_get_all_by_host(context, host)
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.loopingcall File "/opt/stack/nova/nova/db/sqlalchemy/api.py", line 106, in wrapper
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.loopingcall return f(*args, **kwargs)
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.loopingcall File "/opt/stack/nova/nova/db/sqlalchemy/api.py", line 1701, in instance_get_all_by_host
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.loopingcall return _instance_get_all_query(context).filter_by(host=host).all()
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.loopingcall File "/opt/stack/nova/nova/db/sqlalchemy/api.py", line 106, in wrapper
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.loopingcall return f(*args, **kwargs)
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.loopingcall File "/opt/stack/nova/nova/db/sqlalchemy/api.py", line 1692, in _instance_get_all_query
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.loopingcall return model_query(context, models.Instance, project_only=project_only).\
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.loopingcall File "/opt/stack/nova/nova/db/sqlalchemy/api.py", line 196, in model_query
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.loopingcall read_deleted = kwargs.get('read_deleted') or context.read_deleted
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.loopingcall AttributeError: 'RequestContext' object has no attribute 'read_deleted'
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.loopingcall
2012-11-06 15:53:45 17195 ERROR ceilometer.openstack.common.threadgroup [-] 'RequestContext' object has no attribute 'read_deleted'
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.threadgroup Traceback (most recent call last):
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.threadgroup File "/opt/stack/ceilometer/ceilometer/openstack/common/threadgroup.py", line 106, in wait
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.threadgroup x.wait()
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.threadgroup File "/opt/stack/ceilometer/ceilometer/openstack/common/loopingcall.py", line 88, in wait
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.threadgroup return self.done.wait()
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/eventlet/event.py", line 116, in wait
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.threadgroup return hubs.get_hub().switch()
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/eventlet/hubs/hub.py", line 177, in switch
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.threadgroup return self.greenlet.switch()
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.threadgroup File "/opt/stack/ceilometer/ceilometer/openstack/common/loopingcall.py", line 65, in _inner
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.threadgroup self.f(*self.args, **self.kw)
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.threadgroup File "/opt/stack/ceilometer/ceilometer/compute/manager.py", line 79, in periodic_tasks
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.threadgroup for instance in self.resources.instance_get_all_by_host(context):
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.threadgroup File "/opt/stack/ceilometer/ceilometer/compute/resources.py", line 34, in instance_get_all_by_host
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.threadgroup return self.db.instance_get_all_by_host(context, cfg.CONF.host)
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.threadgroup File "/opt/stack/nova/nova/db/api.py", line 626, in instance_get_all_by_host
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.threadgroup return IMPL.instance_get_all_by_host(context, host)
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.threadgroup File "/opt/stack/nova/nova/db/sqlalchemy/api.py", line 106, in wrapper
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.threadgroup return f(*args, **kwargs)
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.threadgroup File "/opt/stack/nova/nova/db/sqlalchemy/api.py", line 1701, in instance_get_all_by_host
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.threadgroup return _instance_get_all_query(context).filter_by(host=host).all()
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.threadgroup File "/opt/stack/nova/nova/db/sqlalchemy/api.py", line 106, in wrapper
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.threadgroup return f(*args, **kwargs)
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.threadgroup File "/opt/stack/nova/nova/db/sqlalchemy/api.py", line 1692, in _instance_get_all_query
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.threadgroup return model_query(context, models.Instance, project_only=project_only).\
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.threadgroup File "/opt/stack/nova/nova/db/sqlalchemy/api.py", line 196, in model_query
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.threadgroup read_deleted = kwargs.get('read_deleted') or context.read_deleted
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.threadgroup AttributeError: 'RequestContext' object has no attribute 'read_deleted'
2012-11-06 15:53:45 17195 TRACE ceilometer.openstack.common.threadgroup
#######

For ceilometer-acentral, it reports:
#######
2012-11-06 15:53:46 17297 INFO ceilometer.openstack.common.rpc.common [-] Connected to AMQP server on localhost:5672
2012-11-06 15:53:46 17297 DEBUG ceilometer.openstack.common.rpc.service [-] Creating Consumer connection for Service ceilometer.agent.central start /opt/stack/ceilometer/ceilometer/openstack/common/rpc/service.py:48
2012-11-06 15:53:46 17297 ERROR ceilometer.openstack.common.loopingcall [-] in looping call
2012-11-06 15:53:46 17297 TRACE ceilometer.openstack.common.loopingcall Traceback (most recent call last):
2012-11-06 15:53:46 17297 TRACE ceilometer.openstack.common.loopingcall File "/opt/stack/ceilometer/ceilometer/openstack/common/loopingcall.py", line 65, in _inner
2012-11-06 15:53:46 17297 TRACE ceilometer.openstack.common.loopingcall self.f(*self.args, **self.kw)
2012-11-06 15:53:46 17297 TRACE ceilometer.openstack.common.loopingcall File "/opt/stack/ceilometer/ceilometer/central/manager.py", line 74, in periodic_tasks
2012-11-06 15:53:46 17297 TRACE ceilometer.openstack.common.loopingcall self.ext_manager.map(self.publish_counters_from_one_pollster,
2012-11-06 15:53:46 17297 TRACE ceilometer.openstack.common.loopingcall AttributeError: 'AgentManager' object has no attribute 'ext_manager'
2012-11-06 15:53:46 17297 TRACE ceilometer.openstack.common.loopingcall
2012-11-06 15:53:46 17297 ERROR ceilometer.openstack.common.threadgroup [-] 'AgentManager' object has no attribute 'ext_manager'
2012-11-06 15:53:46 17297 TRACE ceilometer.openstack.common.threadgroup Traceback (most recent call last):
2012-11-06 15:53:46 17297 TRACE ceilometer.openstack.common.threadgroup File "/opt/stack/ceilometer/ceilometer/openstack/common/threadgroup.py", line 106, in wait
2012-11-06 15:53:46 17297 TRACE ceilometer.openstack.common.threadgroup x.wait()
2012-11-06 15:53:46 17297 TRACE ceilometer.openstack.common.threadgroup File "/opt/stack/ceilometer/ceilometer/openstack/common/loopingcall.py", line 88, in wait
2012-11-06 15:53:46 17297 TRACE ceilometer.openstack.common.threadgroup return self.done.wait()
2012-11-06 15:53:46 17297 TRACE ceilometer.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/eventlet/event.py", line 116, in wait
2012-11-06 15:53:46 17297 TRACE ceilometer.openstack.common.threadgroup return hubs.get_hub().switch()
2012-11-06 15:53:46 17297 TRACE ceilometer.openstack.common.threadgroup File "/usr/lib/python2.7/site-packages/eventlet/hubs/hub.py", line 177, in switch
2012-11-06 15:53:46 17297 TRACE ceilometer.openstack.common.threadgroup return self.greenlet.switch()
2012-11-06 15:53:46 17297 TRACE ceilometer.openstack.common.threadgroup File "/opt/stack/ceilometer/ceilometer/openstack/common/loopingcall.py", line 65, in _inner
2012-11-06 15:53:46 17297 TRACE ceilometer.openstack.common.threadgroup self.f(*self.args, **self.kw)
2012-11-06 15:53:46 17297 TRACE ceilometer.openstack.common.threadgroup File "/opt/stack/ceilometer/ceilometer/central/manager.py", line 74, in periodic_tasks
2012-11-06 15:53:46 17297 TRACE ceilometer.openstack.common.threadgroup self.ext_manager.map(self.publish_counters_from_one_pollster,
2012-11-06 15:53:46 17297 TRACE ceilometer.openstack.common.threadgroup AttributeError: 'AgentManager' object has no attribute 'ext_manager'
2012-11-06 15:53:46 17297 TRACE ceilometer.openstack.common.threadgroup
#######

For ceilometer-collector, it reports:
#######
2012-11-06 15:53:48 17395 TRACE ceilometer super(ServiceLauncher, self).wait()
2012-11-06 15:53:48 17395 TRACE ceilometer File "/opt/stack/ceilometer/ceilometer/openstack/common/service.py", line 98, in wait
2012-11-06 15:53:48 17395 TRACE ceilometer service.wait()
2012-11-06 15:53:48 17395 TRACE ceilometer File "/usr/lib/python2.7/site-packages/eventlet/greenthread.py", line 166, in wait
2012-11-06 15:53:48 17395 TRACE ceilometer return self._exit_event.wait()
2012-11-06 15:53:48 17395 TRACE ceilometer File "/usr/lib/python2.7/site-packages/eventlet/event.py", line 116, in wait
2012-11-06 15:53:48 17395 TRACE ceilometer return hubs.get_hub().switch()
2012-11-06 15:53:48 17395 TRACE ceilometer File "/usr/lib/python2.7/site-packages/eventlet/hubs/hub.py", line 177, in switch
2012-11-06 15:53:48 17395 TRACE ceilometer return self.greenlet.switch()
2012-11-06 15:53:48 17395 TRACE ceilometer File "/usr/lib/python2.7/site-packages/eventlet/greenthread.py", line 192, in main
2012-11-06 15:53:48 17395 TRACE ceilometer result = function(*args, **kwargs)
2012-11-06 15:53:48 17395 TRACE ceilometer File "/opt/stack/ceilometer/ceilometer/openstack/common/service.py", line 68, in run_service
2012-11-06 15:53:48 17395 TRACE ceilometer service.start()
2012-11-06 15:53:48 17395 TRACE ceilometer File "/opt/stack/ceilometer/ceilometer/collector/service.py", line 79, in start
2012-11-06 15:53:48 17395 TRACE ceilometer 'ceilometer.collector.' + cfg.CONF.metering_topic,
2012-11-06 15:53:48 17395 TRACE ceilometer File "/opt/stack/ceilometer/ceilometer/openstack/common/rpc/amqp.py", line 139, in create_worker
2012-11-06 15:53:48 17395 TRACE ceilometer self.connection.create_worker(topic, proxy, pool_name)
2012-11-06 15:53:48 17395 TRACE ceilometer File "/opt/stack/ceilometer/ceilometer/openstack/common/rpc/impl_kombu.py", line 733, in create_worker
2012-11-06 15:53:48 17395 TRACE ceilometer self.declare_topic_consumer(topic, proxy_cb, pool_name)
2012-11-06 15:53:48 17395 TRACE ceilometer File "/opt/stack/ceilometer/ceilometer/openstack/common/rpc/impl_kombu.py", line 675, in declare_topic_consumer
2012-11-06 15:53:48 17395 TRACE ceilometer topic, callback)
2012-11-06 15:53:48 17395 TRACE ceilometer File "/opt/stack/ceilometer/ceilometer/openstack/common/rpc/impl_kombu.py", line 605, in declare_consumer
2012-11-06 15:53:48 17395 TRACE ceilometer return self.ensure(_connect_error, _declare_consumer)
2012-11-06 15:53:48 17395 TRACE ceilometer File "/opt/stack/ceilometer/ceilometer/openstack/common/rpc/impl_kombu.py", line 552, in ensure
2012-11-06 15:53:48 17395 TRACE ceilometer return method(*args, **kwargs)
2012-11-06 15:53:48 17395 TRACE ceilometer File "/opt/stack/ceilometer/ceilometer/openstack/common/rpc/impl_kombu.py", line 601, in _declare_consumer
2012-11-06 15:53:48 17395 TRACE ceilometer self.consumer_num.next())
2012-11-06 15:53:48 17395 TRACE ceilometer File "/opt/stack/ceilometer/ceilometer/openstack/common/rpc/impl_kombu.py", line 248, in __init__
2012-11-06 15:53:48 17395 TRACE ceilometer **options)
2012-11-06 15:53:48 17395 TRACE ceilometer File "/opt/stack/ceilometer/ceilometer/openstack/common/rpc/impl_kombu.py", line 131, in __init__
2012-11-06 15:53:48 17395 TRACE ceilometer self.reconnect(channel)
2012-11-06 15:53:48 17395 TRACE ceilometer File "/opt/stack/ceilometer/ceilometer/openstack/common/rpc/impl_kombu.py", line 138, in reconnect
2012-11-06 15:53:48 17395 TRACE ceilometer self.queue.declare()
2012-11-06 15:53:48 17395 TRACE ceilometer File "/usr/lib/python2.7/site-packages/kombu/entity.py", line 359, in declare
2012-11-06 15:53:48 17395 TRACE ceilometer return (self.name and self.exchange.declare(nowait),
2012-11-06 15:53:48 17395 TRACE ceilometer File "/usr/lib/python2.7/site-packages/kombu/entity.py", line 151, in declare
2012-11-06 15:53:48 17395 TRACE ceilometer nowait=nowait)
2012-11-06 15:53:48 17395 TRACE ceilometer File "/usr/lib/python2.7/site-packages/kombu/syn.py", line 14, in blocking
2012-11-06 15:53:48 17395 TRACE ceilometer return __sync_current(fun, *args, **kwargs)
2012-11-06 15:53:48 17395 TRACE ceilometer File "/usr/lib/python2.7/site-packages/kombu/syn.py", line 40, in __eblocking__
2012-11-06 15:53:48 17395 TRACE ceilometer return spawn(fun, *args, **kwargs).wait()
2012-11-06 15:53:48 17395 TRACE ceilometer File "/usr/lib/python2.7/site-packages/eventlet/greenthread.py", line 166, in wait
2012-11-06 15:53:48 17395 TRACE ceilometer return self._exit_event.wait()
2012-11-06 15:53:48 17395 TRACE ceilometer File "/usr/lib/python2.7/site-packages/eventlet/event.py", line 116, in wait
2012-11-06 15:53:48 17395 TRACE ceilometer return hubs.get_hub().switch()
2012-11-06 15:53:48 17395 TRACE ceilometer File "/usr/lib/python2.7/site-packages/eventlet/hubs/hub.py", line 177, in switch
2012-11-06 15:53:48 17395 TRACE ceilometer return self.greenlet.switch()
2012-11-06 15:53:48 17395 TRACE ceilometer File "/usr/lib/python2.7/site-packages/eventlet/greenthread.py", line 192, in main
2012-11-06 15:53:48 17395 TRACE ceilometer result = function(*args, **kwargs)
2012-11-06 15:53:48 17395 TRACE ceilometer File "/usr/lib/python2.7/site-packages/amqplib/client_0_8/channel.py", line 843, in exchange_declare
2012-11-06 15:53:48 17395 TRACE ceilometer (40, 11), # Channel.exchange_declare_ok
2012-11-06 15:53:48 17395 TRACE ceilometer File "/usr/lib/python2.7/site-packages/amqplib/client_0_8/abstract_channel.py", line 89, in wait
2012-11-06 15:53:48 17395 TRACE ceilometer self.channel_id, allowed_methods)
2012-11-06 15:53:48 17395 TRACE ceilometer File "/usr/lib/python2.7/site-packages/amqplib/client_0_8/connection.py", line 198, in _wait_method
2012-11-06 15:53:48 17395 TRACE ceilometer self.method_reader.read_method()
2012-11-06 15:53:48 17395 TRACE ceilometer File "/usr/lib/python2.7/site-packages/amqplib/client_0_8/method_framing.py", line 215, in read_method
2012-11-06 15:53:48 17395 TRACE ceilometer raise m
2012-11-06 15:53:48 17395 TRACE ceilometer RuntimeError: Second simultaneous read on fileno 4 detected. Unless you really know what you're doing, make sure that only one greenthread can read any particular socket. Consider using a pools.Pool. If you do know what you're doing and want to disable this error, call eventlet.debug.hub_multiple_reader_prevention(False)
2012-11-06 15:53:48 17395 TRACE ceilometer
#######

Revision history for this message
John Tran (jtran) wrote :

I've reproduced the problem and I am looking into it now.

Changed in ceilometer:
status: New → Confirmed
assignee: nobody → John Tran (jtran)
importance: Undecided → Critical
Revision history for this message
John Tran (jtran) wrote :

Can you post a copy of your ceilometer config files?

Revision history for this message
Jiajun-xu (jiajun-xu) wrote :

My ceilometer.conf as below:

[DEFAULT]
sql_connection = mysql://root:123456@localhost/nova?charset=utf8
rabbit_password = 123456
rabbit_host = localhost
verbose = True
notification_topics = notifications,glance_notifications
#rpc_backend = ceilometer.openstack.common.rpc.impl_kombu
rpc_backend = ceilometer.openstack.common.rpc.impl_kombu

[keystone_authtoken]
auth_protocol = http

Revision history for this message
Lianhao Lu (lianhao-lu) wrote :

The reason for the 3 app fail to start is different.

For compute-agent, see bug 1075824 https://bugs.launchpad.net/ceilometer/+bug/1075824.

For central-agent, it's a merge error I guess and is fixed by https://review.openstack.org/#/c/15532/.

Revision history for this message
John Tran (jtran) wrote :

Nice. Thanks for the update.

Revision history for this message
Lianhao Lu (lianhao-lu) wrote :

For the collector issue, it seems to me that this is caused by conn.declare_topic_consumer() in CollectorService.start() after calling conn.consume_in_thread() in rpc.Service.start().

I've tried to unwrap all the start() functions in CollectorService's ancestors, and move conn.consume_in_thread() to the very last in start(), and the issue seems gone.

To fix this issue, we may either
1. modify the common.rpc.Service.start() to add a hook to declare additional consumer before calling consume_in_thread().
2. drop the rpc.Service dependency and unwrap ancestors' start() into CollectorService's own.
3. use a different RPC connection object for CollectorService's own consumers.

Any suggestions?

Revision history for this message
John Tran (jtran) wrote :

I'm not as familiar w/ the rpc service as others are, so I'm un-assigning myself from the ticket so someone else can look at it.

Changed in ceilometer:
assignee: John Tran (jtran) → nobody
Lianhao Lu (lianhao-lu)
Changed in ceilometer:
assignee: nobody → Lianhao Lu (lianhao-lu)
Revision history for this message
Lianhao Lu (lianhao-lu) wrote :

I'll try to fix this by modifying the common.rpc.Service.start() to add a hook to declare additional consumer before calling consume_in_thread().

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

Changed in ceilometer:
status: Confirmed → In Progress
Revision history for this message
Lianhao Lu (lianhao-lu) wrote :

We need to add a hook in rpc.Service so additional topic consumers other than the default ones could be declared before calling rpc.conn.consume_in_thread().

Revision history for this message
Endre Karlson (endre-karlson) wrote :

I am getting this sporadicly for ceilometer-collector as well.

Mark McLoughlin (markmc)
affects: openstack-common → oslo
Revision history for this message
Lianhao Lu (lianhao-lu) wrote :
Changed in oslo:
assignee: nobody → Lianhao Lu (lianhao-lu)
status: New → Fix Committed
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to ceilometer (master)

Reviewed: https://review.openstack.org/15622
Committed: http://github.com/openstack/ceilometer/commit/2b30965869701fbbb5ed03b020820f7e04274748
Submitter: Jenkins
Branch: master

commit 2b30965869701fbbb5ed03b020820f7e04274748
Author: Lianhao Lu <email address hidden>
Date: Thu Nov 8 16:28:16 2012 +0800

    Adopted the oslo's rpc.Service change.

    This fixes the collector part of the bug 1075463.

    Declaring a consumer topic on the same rpc connection after the consume
    thread has started would result the eventlet raise RuntimeError
    exception. So all the declaring work should be done before calling
    rpc.conn.consume_in_thread().

    Using the hook 'initialize_service_hook()' provided by rpc.Service in
    oslo to decalre the collector's specific topic consumers before starting
    the consuming thread.

    Change-Id: I33a98c228d45f7716e46d40d9203188f4e827c11

Changed in ceilometer:
status: In Progress → Fix Committed
Mark McLoughlin (markmc)
Changed in oslo:
milestone: none → grizzly-1
status: Fix Committed → Fix Released
Thierry Carrez (ttx)
Changed in ceilometer:
milestone: none → grizzly-2
status: Fix Committed → Fix Released
Thierry Carrez (ttx)
Changed in ceilometer:
milestone: grizzly-2 → 2013.1
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Related questions

Remote bug watches

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