Repository: hive Updated Branches: refs/heads/master cc6d29ff3 -> 6f828383d
HIVE-13188 : Add close transport to RetryingThriftClient (Rajat Khandelwal, reviwed by Amareshwari Sriramadasu) Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/6f828383 Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/6f828383 Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/6f828383 Branch: refs/heads/master Commit: 6f828383d840156c70eb93e6b8c8089bf72e3774 Parents: cc6d29f Author: Rajat Khandelwal <pro...@apache.org> Authored: Sat Mar 5 19:32:55 2016 +0530 Committer: Amareshwari Sriramadasu <amareshw...@apache.org> Committed: Sat Mar 5 19:32:55 2016 +0530 ---------------------------------------------------------------------- .../thrift/RetryingThriftCLIServiceClient.java | 26 ++++++++++++-------- .../cli/TestRetryingThriftCLIServiceClient.java | 15 +++++------ 2 files changed, 24 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/6f828383/service/src/java/org/apache/hive/service/cli/thrift/RetryingThriftCLIServiceClient.java ---------------------------------------------------------------------- diff --git a/service/src/java/org/apache/hive/service/cli/thrift/RetryingThriftCLIServiceClient.java b/service/src/java/org/apache/hive/service/cli/thrift/RetryingThriftCLIServiceClient.java index a81c600..14191e5 100644 --- a/service/src/java/org/apache/hive/service/cli/thrift/RetryingThriftCLIServiceClient.java +++ b/service/src/java/org/apache/hive/service/cli/thrift/RetryingThriftCLIServiceClient.java @@ -71,9 +71,11 @@ public class RetryingThriftCLIServiceClient implements InvocationHandler { public static class CLIServiceClientWrapper extends CLIServiceClient { private final ICLIService cliService; + private TTransport tTransport; - public CLIServiceClientWrapper(ICLIService icliService) { + public CLIServiceClientWrapper(ICLIService icliService, TTransport tTransport) { cliService = icliService; + this.tTransport = tTransport; } @Override @@ -201,6 +203,10 @@ public class RetryingThriftCLIServiceClient implements InvocationHandler { FetchType fetchType) throws HiveSQLException { return cliService.fetchResults(opHandle, orientation, maxRows, fetchType); } + + public void closeTransport() { + tTransport.close(); + } } protected RetryingThriftCLIServiceClient(HiveConf conf) { @@ -210,24 +216,23 @@ public class RetryingThriftCLIServiceClient implements InvocationHandler { TimeUnit.SECONDS); } - public static CLIServiceClient newRetryingCLIServiceClient(HiveConf conf) throws HiveSQLException { + public static CLIServiceClientWrapper newRetryingCLIServiceClient(HiveConf conf) throws HiveSQLException { RetryingThriftCLIServiceClient retryClient = new RetryingThriftCLIServiceClient(conf); - retryClient.connectWithRetry(conf.getIntVar(HiveConf.ConfVars.HIVE_SERVER2_THRIFT_CLIENT_CONNECTION_RETRY_LIMIT)); + TTransport tTransport = retryClient + .connectWithRetry(conf.getIntVar(HiveConf.ConfVars.HIVE_SERVER2_THRIFT_CLIENT_CONNECTION_RETRY_LIMIT)); ICLIService cliService = (ICLIService) Proxy.newProxyInstance(RetryingThriftCLIServiceClient.class.getClassLoader(), CLIServiceClient.class.getInterfaces(), retryClient); - return new CLIServiceClientWrapper(cliService); + return new CLIServiceClientWrapper(cliService, tTransport); } - protected void connectWithRetry(int retries) throws HiveSQLException { + protected TTransport connectWithRetry(int retries) throws HiveSQLException { + TTransportException exception = null; for (int i = 0 ; i < retries; i++) { try { - connect(conf); - break; + return connect(conf); } catch (TTransportException e) { - if (i + 1 == retries) { - throw new HiveSQLException("Unable to connect after " + retries + " retries", e); - } + exception = e; LOG.warn("Connection attempt " + i, e); } try { @@ -236,6 +241,7 @@ public class RetryingThriftCLIServiceClient implements InvocationHandler { LOG.warn("Interrupted", e); } } + throw new HiveSQLException("Unable to connect after " + retries + " retries", exception); } protected synchronized TTransport connect(HiveConf conf) throws HiveSQLException, TTransportException { http://git-wip-us.apache.org/repos/asf/hive/blob/6f828383/service/src/test/org/apache/hive/service/cli/TestRetryingThriftCLIServiceClient.java ---------------------------------------------------------------------- diff --git a/service/src/test/org/apache/hive/service/cli/TestRetryingThriftCLIServiceClient.java b/service/src/test/org/apache/hive/service/cli/TestRetryingThriftCLIServiceClient.java index 3798053..3bd82e6 100644 --- a/service/src/test/org/apache/hive/service/cli/TestRetryingThriftCLIServiceClient.java +++ b/service/src/test/org/apache/hive/service/cli/TestRetryingThriftCLIServiceClient.java @@ -51,14 +51,14 @@ public class TestRetryingThriftCLIServiceClient { super(conf); } - public static CLIServiceClient newRetryingCLIServiceClient(HiveConf conf) throws HiveSQLException { + public static CLIServiceClientWrapper newRetryingCLIServiceClient(HiveConf conf) throws HiveSQLException { handlerInst = new RetryingThriftCLIServiceClientTest(conf); - handlerInst.connectWithRetry(conf.getIntVar(HiveConf.ConfVars.HIVE_SERVER2_THRIFT_CLIENT_RETRY_LIMIT)); - + TTransport tTransport + = handlerInst.connectWithRetry(conf.getIntVar(HiveConf.ConfVars.HIVE_SERVER2_THRIFT_CLIENT_RETRY_LIMIT)); ICLIService cliService = (ICLIService) Proxy.newProxyInstance(RetryingThriftCLIServiceClientTest.class.getClassLoader(), CLIServiceClient.class.getInterfaces(), handlerInst); - return new CLIServiceClientWrapper(cliService); + return new CLIServiceClientWrapper(cliService, tTransport); } @Override @@ -108,8 +108,8 @@ public class TestRetryingThriftCLIServiceClient { // Reset port setting hiveConf.setIntVar(HiveConf.ConfVars.HIVE_SERVER2_THRIFT_PORT, 15000); // Create client - CLIServiceClient cliServiceClient = - RetryingThriftCLIServiceClientTest.newRetryingCLIServiceClient(hiveConf); + RetryingThriftCLIServiceClient.CLIServiceClientWrapper cliServiceClient + = RetryingThriftCLIServiceClientTest.newRetryingCLIServiceClient(hiveConf); System.out.println("## Created client"); // kill server @@ -127,7 +127,8 @@ public class TestRetryingThriftCLIServiceClient { assertTrue(exc.getCause() instanceof TException); assertEquals(1, RetryingThriftCLIServiceClientTest.handlerInst.callCount); assertEquals(3, RetryingThriftCLIServiceClientTest.handlerInst.connectCount); + } finally { + cliServiceClient.closeTransport(); } - } }