[openstack-dev] question about rpc call dispatch in nova
lianhao.lu at intel.com
Mon Aug 5 05:44:40 UTC 2013
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?
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?
More information about the OpenStack-dev