From 111d61c2063df1aa4cdadd75b25a156baef3263e Mon Sep 17 00:00:00 2001 From: Azrael Park Date: Wed, 17 Jul 2013 16:48:51 +0900 Subject: [PATCH] HIVE-2110 Hive Client is indefenitely waiting for reading from Socket --- jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java | 8 +++++--- jdbc/src/java/org/apache/hive/jdbc/Utils.java | 14 ++++++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java b/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java index 00f4351..23ce755 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java +++ b/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java @@ -94,7 +94,8 @@ public HiveConnection(String uri, Properties info) throws SQLException { } } - openTransport(uri, connParams.getHost(), connParams.getPort(), connParams.getSessionVars()); + openTransport(uri, connParams.getHost(), connParams.getPort(), connParams.getSessionVars(), + connParams.getTimeout()); } // currently only V1 is supported @@ -123,9 +124,10 @@ private void configureConnection(Utils.JdbcConnectionParams connParams) } } - private void openTransport(String uri, String host, int port, Map sessConf ) + private void openTransport(String uri, String host, int port, Map sessConf, + int timeout ) throws SQLException { - transport = new TSocket(host, port); + transport = new TSocket(host, port, timeout); // handle secure connection if specified if (!sessConf.containsKey(HIVE_AUTH_TYPE) diff --git a/jdbc/src/java/org/apache/hive/jdbc/Utils.java b/jdbc/src/java/org/apache/hive/jdbc/Utils.java index d907f0a..e821923 100644 --- a/jdbc/src/java/org/apache/hive/jdbc/Utils.java +++ b/jdbc/src/java/org/apache/hive/jdbc/Utils.java @@ -50,6 +50,7 @@ public static class JdbcConnectionParams { private String host = null; private int port; + private int timeout; private String dbName = DEFAULT_DATABASE; private Map hiveConfs = new HashMap(); private Map hiveVars = new HashMap(); @@ -65,6 +66,9 @@ public String getHost() { public int getPort() { return port; } + public int getTimeout() { + return timeout; + } public String getDbName() { return dbName; } @@ -87,6 +91,9 @@ public void setHost(String host) { public void setPort(int port) { this.port = port; } + public void setTimeout(int timeout){ + this.timeout = timeout; + } public void setDbName(String dbName) { this.dbName = dbName; } @@ -258,6 +265,13 @@ public static JdbcConnectionParams parseURL(String uri) throws IllegalArgumentEx } } + try{ + int timeout = Integer.parseInt(connParams.getHiveConfs().get("socketTimeout")); + connParams.setTimeout(timeout); + }catch (Exception e){ + + } + return connParams; } -- 1.8.2.1