summaryrefslogtreecommitdiffstats
path: root/openstack/common/rpc/common.py
diff options
context:
space:
mode:
authorDavanum Srinivas <dims@linux.vnet.ibm.com>2012-12-27 12:22:56 -0500
committerDavanum Srinivas <dims@linux.vnet.ibm.com>2013-01-02 11:37:36 -0500
commitffeb0855085617095f19296770a1223cb5641d1c (patch)
treee332b2d402056fa039b0288e1e8b16cb9e831e70 /openstack/common/rpc/common.py
parent8888ad0126f25c91b90f7bc4c2440da0bf35ec1d (diff)
downloadoslo-ffeb0855085617095f19296770a1223cb5641d1c.tar.gz
oslo-ffeb0855085617095f19296770a1223cb5641d1c.tar.xz
oslo-ffeb0855085617095f19296770a1223cb5641d1c.zip
Don't rely on os.wait() blocking
Before this fix which was included in eventlet 0.10.0: https://bitbucket.org/which_linden/eventlet/issue/92/eventletgreen-override-of-oswaitpid the os.wait() wrapper in eventlet would not block if no child processes had exited. This was clearly buggy behaviour and os.wait() no blocks correctly. However, it appears it now does not return if the parent process was interrupted by a signal. This means that you can't kill the parent process and have the child processes cleaned up gracefully. To avoid all these issues, switch to non-blocking wait behaviour. We use WNOHANG with waitpid() to poll for an exited child process and, if there is none, we yield to other green threads and sleep for a short period. This means excessive CPU usage, though, which will be tracked by bug #1095346. Check pid to avoid some unnecessary warning/info messages in the logs Fixes LP #1094076 Change-Id: I783fac652376c2daa9d591403b9f4c1fe9523043
Diffstat (limited to 'openstack/common/rpc/common.py')
0 files changed, 0 insertions, 0 deletions