[openstack-dev] question about rpc call dispatch in nova

Lu, Lianhao lianhao.lu at intel.com
Mon Aug 5 06:38:34 UTC 2013

> From: Somanchi Trinath-B39208 [mailto:B39208 at freescale.com]
> Sent: Monday, August 05, 2013 1:59 PM
> To: OpenStack Development Mailing List
> Cc: Lu, Lianhao
> Subject: RE: question about rpc call dispatch in nova
> Hi-
> Please find the Replies inline.
> --
> Trinath Somanchi - B39208
> trinath.somanchi at freescale.com | extn: 4048
> -----Original Message-----
> From: Lu, Lianhao [mailto:lianhao.lu at intel.com]
> Sent: Monday, August 05, 2013 11:15 AM
> To: openstack-dev at lists.openstack.org
> Subject: [openstack-dev] question about rpc call dispatch in nova
> Hi guys,
> When I'm doing some debugging work in nova, I've got some problems which I can't explain and needs some advices/comment from the
> guru in the community.
> With the rabbitmq as my rpc backend, I've started 2 conductor service, nova-condutor and my-condutor(which are very similar, except
> some different rpc and DB name configuration), and a python script 'my-test' using the nova.conductor.api to do the rpc call to conductor,
> using the following configurations:
> Nova-conductor: rabbit_host=localhost, control_exchange=nova, topic=conductor
> My-conductor: rabbit_host=localhost, control_exchange=myex, topic=conductor
> My-test: rabbit_host=localhost, control_exchange=myex, topic=conductor
> 1. If I started nova-conductor first, then started my-conductor after it, I found that the rpc calls issued by my-test were always serviced by
> nova-conductor. I don't know why this would happened. Because according to my understanding, only my-conductor can serve the rpc calls
> issued by my-test, because both of them used the same exchange. Any explanation for this?
> [Trinath Somanchi - B39208] Can you check what are the messages on the Queue. And, check to which exchange you are binding to. In you
> code base changes, re-check the communication between the my-conductor and my test... Give try by changing the topic to
> my-test-conductor for your own code base rather than conductor topic.

After change the topic of both my-conductor and my-test to my-test-conductor, the rpc call messages are dispatched to the correct service, i.e. my-conductor. But then I met the same problem as in the following item 2. The greenthread to serve the rpc call never got a chance to run until I 'Ctrl-C' my-conductor.

> 2. If I started my-conductor first, then started nova-conductor after it, the AMQP messages for the rpc calls issued by my-test were
> received by my-conductor which is expected. But the rpc call was never returned. I did some debug and found that the greenthread to
> execute the method of nova.amqp.ProxyCallback._process_data() to serve the rpc call was successfully created, but never had a chance to
> run, until I 'Ctrl-C' the my-condcutor. Any clue for this?
> [Trinath Somanchi - B39208] Are you consuming from the queue for the same.. ?
> Thanks
> -Lianhao

More information about the OpenStack-dev mailing list