You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by cl...@apache.org on 2017/09/12 05:23:16 UTC
zeppelin git commit: [hotfix] JDBC connection does not release when
got exception.
Repository: zeppelin
Updated Branches:
refs/heads/master 84ac43328 -> 3fb67f9cc
[hotfix] JDBC connection does not release when got exception.
### What is this PR for?
This PR fixes JDBC connection release problem.
for example whenever i run not executable command like following
![image](https://user-images.githubusercontent.com/3348133/30206892-8248d1ae-94c8-11e7-9eae-a495be075892.png)
new JDBC connection is made like following.
```
$ netstat -an |grep EST |grep 3306 |wc -l
1
$ netstat -an |grep EST |grep 3306 |wc -l
2
$ netstat -an |grep EST |grep 3306 |wc -l
3
```
### What type of PR is it?
Bug Fix
### Questions:
* Does the licenses files need update? No
* Is there breaking changes for older versions? No
* Does this needs documentation? No
Author: Shim <yo...@gmail.com>
Closes #2576 from astroshim/fix/jdbcConnectionRelease and squashes the following commits:
d32425cc [Shim] changed to Throwable
3ae59e9f [Shim] fixed exception codes
88d3edb9 [Shim] fix jdbc connection relase issue.
Project: http://git-wip-us.apache.org/repos/asf/zeppelin/repo
Commit: http://git-wip-us.apache.org/repos/asf/zeppelin/commit/3fb67f9c
Tree: http://git-wip-us.apache.org/repos/asf/zeppelin/tree/3fb67f9c
Diff: http://git-wip-us.apache.org/repos/asf/zeppelin/diff/3fb67f9c
Branch: refs/heads/master
Commit: 3fb67f9cc5a497ee3b1b566b745bc1af349871e0
Parents: 84ac433
Author: Shim <yo...@gmail.com>
Authored: Mon Sep 11 12:47:15 2017 +0900
Committer: CloverHearts <cl...@gmail.com>
Committed: Tue Sep 12 14:23:09 2017 +0900
----------------------------------------------------------------------
.../apache/zeppelin/jdbc/JDBCInterpreter.java | 34 ++++++++++++--------
1 file changed, 20 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/3fb67f9c/jdbc/src/main/java/org/apache/zeppelin/jdbc/JDBCInterpreter.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/apache/zeppelin/jdbc/JDBCInterpreter.java b/jdbc/src/main/java/org/apache/zeppelin/jdbc/JDBCInterpreter.java
index f3f4326..4bb4f0f 100644
--- a/jdbc/src/main/java/org/apache/zeppelin/jdbc/JDBCInterpreter.java
+++ b/jdbc/src/main/java/org/apache/zeppelin/jdbc/JDBCInterpreter.java
@@ -653,7 +653,7 @@ public class JDBCInterpreter extends KerberosInterpreter {
private InterpreterResult executeSql(String propertyKey, String sql,
InterpreterContext interpreterContext) {
- Connection connection;
+ Connection connection = null;
Statement statement;
ResultSet resultSet = null;
String paragraphId = interpreterContext.getParagraphId();
@@ -668,11 +668,21 @@ public class JDBCInterpreter extends KerberosInterpreter {
InterpreterResult interpreterResult = new InterpreterResult(InterpreterResult.Code.SUCCESS);
try {
connection = getConnection(propertyKey, interpreterContext);
- if (connection == null) {
- return new InterpreterResult(Code.ERROR, "Prefix not found.");
+ } catch (Exception e) {
+ String errorMsg = Throwables.getStackTraceAsString(e);
+ try {
+ closeDBPool(user, propertyKey);
+ } catch (SQLException e1) {
+ logger.error("Cannot close DBPool for user, propertyKey: " + user + propertyKey, e1);
}
+ interpreterResult.add(errorMsg);
+ return new InterpreterResult(Code.ERROR, interpreterResult.message());
+ }
+ if (connection == null) {
+ return new InterpreterResult(Code.ERROR, "Prefix not found.");
+ }
-
+ try {
List<String> sqlArray;
if (splitQuery) {
sqlArray = splitSqlQueries(sql);
@@ -734,6 +744,12 @@ public class JDBCInterpreter extends KerberosInterpreter {
}
}
}
+ } catch (Throwable e) {
+ logger.error("Cannot run " + sql, e);
+ String errorMsg = Throwables.getStackTraceAsString(e);
+ interpreterResult.add(errorMsg);
+ return new InterpreterResult(Code.ERROR, interpreterResult.message());
+ } finally {
//In case user ran an insert/update/upsert statement
if (connection != null) {
try {
@@ -744,16 +760,6 @@ public class JDBCInterpreter extends KerberosInterpreter {
} catch (SQLException e) { /*ignored*/ }
}
getJDBCConfiguration(user).removeStatement(paragraphId);
- } catch (Throwable e) {
- logger.error("Cannot run " + sql, e);
- String errorMsg = Throwables.getStackTraceAsString(e);
- try {
- closeDBPool(user, propertyKey);
- } catch (SQLException e1) {
- logger.error("Cannot close DBPool for user, propertyKey: " + user + propertyKey, e1);
- }
- interpreterResult.add(errorMsg);
- return new InterpreterResult(Code.ERROR, interpreterResult.message());
}
return interpreterResult;
}