Hi Ray, Thanks for your reply. try .... except .... change to line 386 only solve cinder-scheduler or nova-compute service which is the similar implementation stop raise exception. However, all cinder-volume queue be removed when one of multi-cinder-volume service stop. It is another problem. I use pdb module to trace two different sevice stop(cinder-scheduler and cinder-volume). I describe two different implemention stop service cinder-scheduler catch the signal to stop will to call _launcher.stop() cinder/service.py line 612 _launcher.stop() will kill all service thread which run service.start and service.wait . After thread killed, I found that connection.session.recievers is [], that means all consumer released. I'm not sure connection closed or not. I found that the method kill() of class service not be called.
cinder-volume launch two processes, service run in child process (service.py line 227) and parent process watch the status of child. When parent process catch to stop signal, it send the stop signal to child process. child process will catch signal and call service.stop (service.py line 239) And I use pdb to trace stop steps. I found that connection.session.receivers is not [] and including three receivers(cinder-volume, cinder-volume.node1, cinder-volume_fanout) qpid will remove receivers of session, then MessageCancel and QueueDelete will set to qpidd. I think QueueDelete told the qpidd to delete all cinder-volume queues. 2013/5/30 Ray Pekowski <pekow...@gmail.com> > I am not familiar with impl_qpid,py, but am familiar with amqp.py and have > had problems around rpc_amqp.cleanup() the Pool.empty() method it calls. > It was a totally different problem, but I decided to take a look at your > problem. I noticed that in impl_qpid.py the only other place a > connection.close() is done is surrounded by this code: > > # Close the session if necessary > if self.connection.opened(): > try: > self.connection.close() > except qpid_exceptions.ConnectionError: > pass > > I suggest you wrap the close at line 386 of impl_qpid.py with the same > code and your problem will be fixed. Here is the line identified from your > call stack: > > File "/usr/lib/python2.6/site- > packages/cinder/openstack/common/rpc/impl_qpid.py", line 386, in close > self.connection.close() > > If that works, open a bug report. > > Good catch > > Ray >
_______________________________________________ Mailing list: https://launchpad.net/~openstack Post to : openstack@lists.launchpad.net Unsubscribe : https://launchpad.net/~openstack More help : https://help.launchpad.net/ListHelp