Nova notifier thread does not run in rpc_worker sub-processes
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
neutron |
Fix Released
|
Medium
|
Carl Baldwin | ||
Icehouse |
Fix Released
|
Medium
|
Assaf Muller |
Bug Description
This reported to me today by Maru. When an rpc worker is spawned as a sub-process, that happens after the nova notifier thread has already started.
eventlet.
From the event let documentation: "Make sure to do this before the application starts doing any I/O! Calling use_hub completely eliminates the old hub, and any file descriptors or timers that it had been managing will be forgotten."
Maru's observation is that this means that thread should not spawn before forking the process if they need to run in the child process. I agree.
The reason that threads spawn is that the plugin gets loaded prior to forking and the thread for the nova notifier is started in the __init__ method of a sub-class of the plugin.
Changed in neutron: | |
importance: | Undecided → Medium |
tags: | added: icehouse-backport-potential |
tags: | removed: icehouse-backport-potential |
Changed in neutron: | |
milestone: | none → juno-1 |
status: | Fix Committed → Fix Released |
Changed in neutron: | |
milestone: | juno-1 → 2014.2 |
I think what we need is a start method on the plugin and base classes that starts any threads so that this method can be called after the fork has been done.