OOZIE-3183 SshActionExecutor#drainBuffers() has changed. Previously, it called Process#exitCode() that would return immediately either with the exit code, or would throw an IllegalThreadStateException if the process would still be running.
In the current implementation introduced by
OOZIE-3183, Process#waitFor() is used that would block until the process finishes. Given the fact that sometime SshActionExecutor#check() calls ssh ... cat stdout, and this SSH process can be trapped even after cat stdout has been finished on the target host, it can happen that SshActionExecutor#drainBuffers() waits indefinitely without a chance to gather any stdout or stderr logs. Hence this particular one is a compatibility breaking change with existing SSH action behavior.
Let's re-introduce the former behavior in SshActionExecutor#drainBuffers() that keeps polling Process#exitValue() and reading the progress on stdout and stderr till the process finishes, for backwards compatibility.
This article covers the behavioral details of Process#waitFor().