Repository: jclouds Updated Branches: refs/heads/master 502d96d22 -> 060b66a4f
Close connection during ExecChannel Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/060b66a4 Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/060b66a4 Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/060b66a4 Branch: refs/heads/master Commit: 060b66a4f7f48aa9c2e79dafeb0540b896f39355 Parents: 502d96d Author: Nikolay Sokolov <[email protected]> Authored: Tue Jun 16 19:43:05 2015 +0300 Committer: Ignasi Barrera <[email protected]> Committed: Sun Oct 25 23:02:33 2015 +0100 ---------------------------------------------------------------------- compute/src/main/java/org/jclouds/ssh/SshClient.java | 4 +--- .../src/main/java/org/jclouds/sshj/SshjSshClient.java | 14 ++++++++++---- 2 files changed, 11 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/060b66a4/compute/src/main/java/org/jclouds/ssh/SshClient.java ---------------------------------------------------------------------- diff --git a/compute/src/main/java/org/jclouds/ssh/SshClient.java b/compute/src/main/java/org/jclouds/ssh/SshClient.java index f1cce77..f152aff 100644 --- a/compute/src/main/java/org/jclouds/ssh/SshClient.java +++ b/compute/src/main/java/org/jclouds/ssh/SshClient.java @@ -48,9 +48,7 @@ public interface SshClient { ExecResponse exec(String command); /** - * Execute a process and allow the user to interact with it. Note that this will allow the - * session to exist indefinitely, and its connection is not closed when {@link #disconnect()} is - * called. + * Execute a process and allow the user to interact with it. * * @param command * command line to invoke http://git-wip-us.apache.org/repos/asf/jclouds/blob/060b66a4/drivers/sshj/src/main/java/org/jclouds/sshj/SshjSshClient.java ---------------------------------------------------------------------- diff --git a/drivers/sshj/src/main/java/org/jclouds/sshj/SshjSshClient.java b/drivers/sshj/src/main/java/org/jclouds/sshj/SshjSshClient.java index 2d2cb0d..b07b0e2 100644 --- a/drivers/sshj/src/main/java/org/jclouds/sshj/SshjSshClient.java +++ b/drivers/sshj/src/main/java/org/jclouds/sshj/SshjSshClient.java @@ -511,8 +511,8 @@ public class SshjSshClient implements SshClient { class ExecChannelConnection implements Connection<ExecChannel> { private final String command; - private SessionChannel session; private Command output; + private Connection<Session> connection; ExecChannelConnection(String command) { this.command = checkNotNull(command, "command"); @@ -521,13 +521,19 @@ public class SshjSshClient implements SshClient { @Override public void clear() { Closeables2.closeQuietly(output); - Closeables2.closeQuietly(session); + try { + if (connection != null) { + connection.clear(); + } + } catch (Throwable e) { + Throwables.propagate(e); + } } @Override public ExecChannel create() throws Exception { - session = SessionChannel.class.cast(acquire(noPTYConnection())); - output = session.exec(command); + connection = noPTYConnection(); + output = SessionChannel.class.cast(acquire(connection)).exec(command); return new ExecChannel(output.getOutputStream(), output.getInputStream(), output.getErrorStream(), new Supplier<Integer>() {
