3d3d5b3 introduced running Puma processes as child forks.
The fix was necessary but it doesn't monitor the process state properly.
What if after(:suite) block is not executed at all and child process becomes a zombie?
What if fork process refuses to exit for some reason?
So I have introduced a Fork helper that tries to prevent forks from becoming a zombie by sending it SIGKILL if SIGTERM didn't have an effect in 500ms or when Ruby interpreter terminates completely (at_exit).
3d3d5b3 introduced running Puma processes as child forks.
The fix was necessary but it doesn't monitor the process state properly.
What if
after(:suite)
block is not executed at all and child process becomes a zombie? What if fork process refuses to exit for some reason?So I have introduced a
Fork
helper that tries to prevent forks from becoming a zombie by sending itSIGKILL
ifSIGTERM
didn't have an effect in 500ms or when Ruby interpreter terminates completely (at_exit
).