Repository: tajo Updated Branches: refs/heads/index_support 4d01fca99 -> 8ec099c8d
TAJO-1619: JDBC program is stuck after closing. (jihoon) Closes #584 Project: http://git-wip-us.apache.org/repos/asf/tajo/repo Commit: http://git-wip-us.apache.org/repos/asf/tajo/commit/4b2ab610 Tree: http://git-wip-us.apache.org/repos/asf/tajo/tree/4b2ab610 Diff: http://git-wip-us.apache.org/repos/asf/tajo/diff/4b2ab610 Branch: refs/heads/index_support Commit: 4b2ab61072031ee39565755c285ef267e9451b55 Parents: bbfa076 Author: Jihoon Son <[email protected]> Authored: Tue May 26 16:14:21 2015 +0900 Committer: Jihoon Son <[email protected]> Committed: Tue May 26 16:14:21 2015 +0900 ---------------------------------------------------------------------- CHANGES | 2 ++ .../org/apache/tajo/client/SessionConnection.java | 14 ++++++++++++++ .../java/org/apache/tajo/jdbc/JdbcConnection.java | 4 +++- 3 files changed, 19 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tajo/blob/4b2ab610/CHANGES ---------------------------------------------------------------------- diff --git a/CHANGES b/CHANGES index f1b7e6e..0d71d2f 100644 --- a/CHANGES +++ b/CHANGES @@ -136,6 +136,8 @@ Release 0.11.0 - unreleased BUG FIXES + TAJO-1619: JDBC program is stuck after closing. (jihoon) + TAJO-1620: random() in an SQL should generate RANDOM numbers. (Contributed by Jongyoung Park, Committed by jihoon) http://git-wip-us.apache.org/repos/asf/tajo/blob/4b2ab610/tajo-client/src/main/java/org/apache/tajo/client/SessionConnection.java ---------------------------------------------------------------------- diff --git a/tajo-client/src/main/java/org/apache/tajo/client/SessionConnection.java b/tajo-client/src/main/java/org/apache/tajo/client/SessionConnection.java index 84decd5..ee2d45a 100644 --- a/tajo-client/src/main/java/org/apache/tajo/client/SessionConnection.java +++ b/tajo-client/src/main/java/org/apache/tajo/client/SessionConnection.java @@ -30,9 +30,11 @@ import org.apache.tajo.ipc.ClientProtos.ResultCode; import org.apache.tajo.ipc.ClientProtos.SessionUpdateResponse; import org.apache.tajo.ipc.TajoMasterClientProtocol; import org.apache.tajo.rpc.NettyClientBase; +import org.apache.tajo.rpc.RpcChannelFactory; import org.apache.tajo.rpc.RpcClientManager; import org.apache.tajo.rpc.RpcConstants; import org.apache.tajo.service.ServiceTracker; +import org.apache.tajo.util.CommonTestingUtil; import org.apache.tajo.util.KeyValueSet; import org.apache.tajo.util.ProtoUtil; @@ -45,6 +47,7 @@ import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; import static org.apache.tajo.ipc.ClientProtos.CreateSessionRequest; import static org.apache.tajo.ipc.ClientProtos.CreateSessionResponse; @@ -54,6 +57,8 @@ public class SessionConnection implements Closeable { private final static Log LOG = LogFactory.getLog(SessionConnection.class); + private final static AtomicInteger connections = new AtomicInteger(); + final RpcClientManager manager; private String baseDatabase; @@ -112,6 +117,7 @@ public class SessionConnection implements Closeable { // Client do not closed on idle state for support high available this.client = manager.newClient(getTajoMasterAddr(), TajoMasterClientProtocol.class, false, manager.getRetries(), 0, TimeUnit.SECONDS, false); + connections.incrementAndGet(); } catch (Exception e) { throw new ServiceException(e); } @@ -272,6 +278,14 @@ public class SessionConnection implements Closeable { // ignore } finally { RpcClientManager.cleanup(client); + if(connections.decrementAndGet() == 0) { + if (!System.getProperty(CommonTestingUtil.TAJO_TEST_KEY, "FALSE").equals(CommonTestingUtil.TAJO_TEST_TRUE)) { + RpcChannelFactory.shutdownGracefully(); + if (LOG.isDebugEnabled()) { + LOG.debug("RPC connection is closed"); + } + } + } } } http://git-wip-us.apache.org/repos/asf/tajo/blob/4b2ab610/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/JdbcConnection.java ---------------------------------------------------------------------- diff --git a/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/JdbcConnection.java b/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/JdbcConnection.java index 2879540..959860d 100644 --- a/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/JdbcConnection.java +++ b/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/JdbcConnection.java @@ -33,7 +33,9 @@ import org.apache.tajo.util.KeyValueSet; import java.io.IOException; import java.net.URI; import java.sql.*; -import java.util.*; +import java.util.List; +import java.util.Map; +import java.util.Properties; import java.util.concurrent.Executor; import java.util.concurrent.atomic.AtomicBoolean;
