You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by el...@apache.org on 2016/06/21 03:39:54 UTC

[04/28] accumulo git commit: ACCUMULO-4317 Ensure the socket is closed on failure to set up a Thrift client

ACCUMULO-4317 Ensure the socket is closed on failure to set up a Thrift client

Signed-off-by: Josh Elser <el...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/561f1893
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/561f1893
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/561f1893

Branch: refs/heads/1.8
Commit: 561f1893b9f239457e16c046702d8ba9df1474e2
Parents: d5ea00f
Author: Michiel Vanderlee <ma...@gmail.com>
Authored: Mon Jun 20 18:09:37 2016 -0400
Committer: Josh Elser <el...@apache.org>
Committed: Mon Jun 20 18:09:37 2016 -0400

----------------------------------------------------------------------
 .../accumulo/core/util/TTimeoutTransport.java   | 24 ++++++++++++++------
 .../apache/accumulo/core/util/ThriftUtil.java   |  8 ++++++-
 2 files changed, 24 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/561f1893/core/src/main/java/org/apache/accumulo/core/util/TTimeoutTransport.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/util/TTimeoutTransport.java b/core/src/main/java/org/apache/accumulo/core/util/TTimeoutTransport.java
index 1eac8be..52a9a98 100644
--- a/core/src/main/java/org/apache/accumulo/core/util/TTimeoutTransport.java
+++ b/core/src/main/java/org/apache/accumulo/core/util/TTimeoutTransport.java
@@ -66,12 +66,22 @@ public class TTimeoutTransport {
   }
 
   public static TTransport create(SocketAddress addr, long timeoutMillis) throws IOException {
-    Socket socket = SelectorProvider.provider().openSocketChannel().socket();
-    socket.setSoLinger(false, 0);
-    socket.setTcpNoDelay(true);
-    socket.connect(addr);
-    InputStream input = new BufferedInputStream(getInputStream(socket, timeoutMillis), 1024 * 10);
-    OutputStream output = new BufferedOutputStream(NetUtils.getOutputStream(socket, timeoutMillis), 1024 * 10);
-    return new TIOStreamTransport(input, output);
+    Socket socket = null;
+    try {
+      socket = SelectorProvider.provider().openSocketChannel().socket();
+      socket.setSoLinger(false, 0);
+      socket.setTcpNoDelay(true);
+      socket.connect(addr);
+      InputStream input = new BufferedInputStream(getInputStream(socket, timeoutMillis), 1024 * 10);
+      OutputStream output = new BufferedOutputStream(NetUtils.getOutputStream(socket, timeoutMillis), 1024 * 10);
+      return new TIOStreamTransport(input, output);
+    } catch (IOException e) {
+      try {
+        if (socket != null)
+          socket.close();
+      } catch (IOException ioe) {}
+
+      throw e;
+    }
   }
 }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/561f1893/core/src/main/java/org/apache/accumulo/core/util/ThriftUtil.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/util/ThriftUtil.java b/core/src/main/java/org/apache/accumulo/core/util/ThriftUtil.java
index 29f7fb7..48ff3f2 100644
--- a/core/src/main/java/org/apache/accumulo/core/util/ThriftUtil.java
+++ b/core/src/main/java/org/apache/accumulo/core/util/ThriftUtil.java
@@ -349,11 +349,17 @@ public class ThriftUtil {
    *          Socket timeout
    */
   private static TSocket createClient(SSLSocketFactory factory, String host, int port, int timeout) throws TTransportException {
+    SSLSocket socket = null;
     try {
-      SSLSocket socket = (SSLSocket) factory.createSocket(host, port);
+      socket = (SSLSocket) factory.createSocket(host, port);
       socket.setSoTimeout(timeout);
       return new TSocket(socket);
     } catch (Exception e) {
+      try {
+        if (socket != null)
+          socket.close();
+      } catch (IOException ioe) {}
+
       throw new TTransportException("Could not connect to " + host + " on port " + port, e);
     }
   }