diff options
author | Davanum Srinivas <dims@linux.vnet.ibm.com> | 2012-12-27 12:22:56 -0500 |
---|---|---|
committer | Davanum Srinivas <dims@linux.vnet.ibm.com> | 2013-01-02 11:37:36 -0500 |
commit | ffeb0855085617095f19296770a1223cb5641d1c (patch) | |
tree | e332b2d402056fa039b0288e1e8b16cb9e831e70 /tests/unit/test_notifier.py | |
parent | 8888ad0126f25c91b90f7bc4c2440da0bf35ec1d (diff) | |
download | oslo-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 'tests/unit/test_notifier.py')
0 files changed, 0 insertions, 0 deletions