Wait for EOF on stderr before finishing SSH channel
commit243b0d64a68990b10a3e6e0d5612cd5bb25626f8
authorShawn O. Pearce <spearce@spearce.org>
Thu, 11 Feb 2010 03:54:07 +0000 (10 19:54 -0800)
committerShawn O. Pearce <spearce@spearce.org>
Sat, 13 Mar 2010 00:08:13 +0000 (12 16:08 -0800)
tree1ebb4cf3a995b339a886e467b1e9960c9209f9c7
parent673b3984bdc540da99e1c390cf31f455896a1cda
Wait for EOF on stderr before finishing SSH channel

JSch will allow us to close the connection and then just drop
any late messages coming over the stderr stream for the command.
This makes it easy to lose final output on a command, like from
Gerrit Code Review's post receive hook.

Instead spawn a background thread to copy data from JSch's pipe
into our own buffer, and wait for that thread to receive EOF on the
pipe before we declare the connection closed. This way we don't
have a race condition between the stderr data arriving and JSch
just tearing down the channel.

Change-Id: Ica1ba40ed2b4b6efb7d5e4ea240efc0a56fb71f6
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportGitSsh.java