I observed that the full e2e tests (TestPushup) were hanging on my Mac, while the same Git checkout worked fine on a Linux vm.
I dumped the stack trace of all the goroutines and saw that one was blocked waiting for a child process (Cmd type in os/exec) to exit.
So somehow the combo of signal handling and context cancellation wasn't correct, at least for macOS.
Pushup uses a lot of child processes, because e2e tests fire up a full Pushup app and the hot-reloading mode -dev does as well. So it's important to get right.
This PR simplifies things and should make signal handling and context cancellation (and therefore managing of shutdowns and whatnot of child processes) more robust.
I observed that the full e2e tests (TestPushup) were hanging on my Mac, while the same Git checkout worked fine on a Linux vm.
I dumped the stack trace of all the goroutines and saw that one was blocked waiting for a child process (
Cmd
type inos/exec
) to exit.So somehow the combo of signal handling and context cancellation wasn't correct, at least for macOS.
Pushup uses a lot of child processes, because e2e tests fire up a full Pushup app and the hot-reloading mode
-dev
does as well. So it's important to get right.This PR simplifies things and should make signal handling and context cancellation (and therefore managing of shutdowns and whatnot of child processes) more robust.