diff --git jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java index ef39573..9c4757f 100644 --- jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java +++ jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java @@ -41,6 +41,7 @@ import java.util.Map.Entry; import java.util.Properties; import java.util.concurrent.Executor; +import java.util.concurrent.TimeUnit; import javax.security.sasl.Sasl; import javax.security.sasl.SaslException; @@ -99,7 +100,7 @@ private int loginTimeout = 0; public HiveConnection(String uri, Properties info) throws SQLException { - loginTimeout = DriverManager.getLoginTimeout(); + setupLoginTimeout(); jdbcURI = uri; // parse the connection uri Utils.JdbcConnectionParams connParams = Utils.parseURL(jdbcURI); @@ -325,6 +326,16 @@ private String getSessionValue(String varName, String varDefault) { return varValue; } + // copy loginTimeout from driver manager. Thrift timeout needs to be in millis + private void setupLoginTimeout() { + long timeOut = TimeUnit.SECONDS.toMillis(DriverManager.getLoginTimeout()); + if (timeOut > Integer.MAX_VALUE) { + loginTimeout = Integer.MAX_VALUE; + } else { + loginTimeout = (int) timeOut; + } + } + public void abort(Executor executor) throws SQLException { // JDK 1.7 throw new SQLException("Method not supported"); diff --git service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java index d80649f..d8ba3aa 100644 --- service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java +++ service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java @@ -195,8 +195,13 @@ public static TServerSocket getServerSSLSocket(String hiveHost, int portNum, new TSSLTransportFactory.TSSLTransportParameters(); params.setKeyStore(keyStorePath, keyStorePassWord); - return TSSLTransportFactory.getServerSocket(portNum, 10000, - InetAddress.getByName(hiveHost), params); + InetAddress serverAddress; + if (hiveHost == null || hiveHost.isEmpty()) { + serverAddress = InetAddress.getLocalHost(); + } else { + serverAddress = InetAddress.getByName(hiveHost); + } + return TSSLTransportFactory.getServerSocket(portNum, 10000, serverAddress, params); } }