[openstack-dev] rpc.call to nova-conductor NOT return

Lu, Lianhao lianhao.lu at intel.com
Wed Aug 7 01:54:16 UTC 2013


Hi guys,

Sorry to bug, but I have met a problem about the rpc call. I wrote some python code to rpc.call to nova-condcutor, but that rpc.call seems never return. (I'm using rabbitmq as the rpc backend) My code snippet is something like:

  conductor_api = conductor.API()
  ctxt = context.get_admin_context()
  services = conductor_api.service_get_all(ctxt)
  
It blocks at conductor_api.service_get_all. I did some debug, and found that the main thread blocked at the line https://github.com/openstack/nova/blob/master/nova/openstack/common/rpc/amqp.py#L486 waiting to get the reply messages of the previous rpc.call to nova-conductor out of the data queue self._dataqueue (it's of type eventlet.queue.LightQueue). Also I've confirmed that nova-conductor has received the rpc.call and served it. And those reply messages from nova-conductor actually had been added into that data queue by the line https://github.com/openstack/nova/blob/master/nova/openstack/common/rpc/amqp.py#L193 . However, the main thread seemed never be able to wake up again.

Here is a simplified version of my code which can reproduce the same problem:
1. Have a nova-conductor service running
  # nova-conductor --config-file <nova config file>
2. Get my simple python code
  # wget https://raw.github.com/lianhao/novadbtest/master/t.py 
3. Run the python code
  # python t.py --config-file <same nova config file as the nova-conductor>

Can anyone give me some clue where I'm doing it wrong? Thanks a lot!

Best Regards,
-Lianhao




More information about the OpenStack-dev mailing list