tests/common/impala_cluster.py contains some helper classes for starting/stopping/listing impala daemons. These work well in the general case, but do not check for things that could go wrong. Some examples:
- start() just starts the process and does not wait for it to be actually responsive - this means that a crash/freeze during startup will not be noticed during the startup, but in a later (possible unrelated) test/operation that tries to reach the daemon
- kill() does not wait for the process to terminate, which may mislead tests that list/count Impala daemons (this is a possible cause of
- kill() does not check if the PID it kills is actually an Impala daemon - the process may have crashed and the OS may have given the same PID to a new process (this is very unlikely, but the results are potentially really weird)
It is probably not possible to make these functions completely synchronous, but reducing the chance for issues can save us from some long investigations in the future.
Note that the impala processes are detached from the test process, so no notification is sent if they are terminated.