Repository: zeppelin
Updated Branches:
  refs/heads/master fd715c86a -> ab5ce6256


increase more logs, and return appropriate error to front-end

### What is this PR for?
In the current implementation JDBC interpret only catches SQLException and 
ClassNotFoundException. However, there can be a case for example 
NullPointerException or for that matter anything else can be thrown.

### What type of PR is it?
[Improvement]

### Todos
* [x] - increase more logs, and return appropriate error to front-end

### What is the Jira issue?
* Open an issue on Jira https://issues.apache.org/jira/browse/ZEPPELIN/
* Put link here, and add [ZEPPELIN-*Jira number*] in PR title, eg. 
[ZEPPELIN-533]

### How should this be tested?
As an example for hive2.

#### Properties

|name|  value|
| ------------- |:-------------:|
|default.driver|        org.apache.hive.jdbc.HiveDriver|
|default.url    
|jdbc:hive2://hive-machine:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2|

#### Dependencies

|artifact       |exclude|
| ------------- |:-------------:|
|org.apache.hive:hive-jdbc:1.2.1        ||
|org.apache.hadoop:hadoop-common:2.7.2||

With the above setting used on an older driver for hive2 it shows exception in 
log, but on the front-end paragraph shows error, and no logs.

```
ERROR [2016-06-19 14:47:46,186] ({pool-2-thread-2} Job.java[run]:182) - Job 
failed
java.lang.NullPointerException
        at org.apache.thrift.transport.TSocket.open(TSocket.java:168)
        at 
org.apache.thrift.transport.TSaslTransport.open(TSaslTransport.java:248)
        at 
org.apache.thrift.transport.TSaslClientTransport.open(TSaslClientTransport.java:37)
        at 
org.apache.hive.jdbc.HiveConnection.openTransport(HiveConnection.java:190)
        at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:163)
        at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105)
        at java.sql.DriverManager.getConnection(DriverManager.java:571)
        at java.sql.DriverManager.getConnection(DriverManager.java:187)
        at 
org.apache.zeppelin.jdbc.JDBCInterpreter.getConnection(JDBCInterpreter.java:218)
        at 
org.apache.zeppelin.jdbc.JDBCInterpreter.getStatement(JDBCInterpreter.java:229)
        at 
org.apache.zeppelin.jdbc.JDBCInterpreter.executeSql(JDBCInterpreter.java:288)
        at 
org.apache.zeppelin.jdbc.JDBCInterpreter.interpret(JDBCInterpreter.java:393)
        at 
org.apache.zeppelin.interpreter.LazyOpenInterpreter.interpret(LazyOpenInterpreter.java:94)
        at 
org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer$InterpretJob.jobRun(RemoteInterpreterServer.java:341)
        at org.apache.zeppelin.scheduler.Job.run(Job.java:176)
        at 
org.apache.zeppelin.scheduler.FIFOScheduler$1.run(FIFOScheduler.java:139)
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
```

### Screenshots (if appropriate)

Before:
<img width="1436" alt="screen shot 2016-06-20 at 5 11 59 pm" 
src="https://cloud.githubusercontent.com/assets/674497/16192988/20ce0312-370a-11e6-967e-281e99dbb18f.png";>

After:
<img width="1435" alt="screen shot 2016-06-20 at 5 10 26 pm" 
src="https://cloud.githubusercontent.com/assets/674497/16192984/1121d222-370a-11e6-8da9-43adc80c9c15.png";>

### Questions:
* Does the licenses files need update? no
* Is there breaking changes for older versions? no
* Does this needs documentation? no

Author: Prabhjyot Singh <[email protected]>

Closes #1051 from prabhjyotsingh/ZEPPELIN-1036 and squashes the following 
commits:

595ebc6 [Prabhjyot Singh] have e.getStackTrace() in all cases.
2e8dc0c [Prabhjyot Singh] increase more logs, and return appropriate error to 
front-end


Project: http://git-wip-us.apache.org/repos/asf/zeppelin/repo
Commit: http://git-wip-us.apache.org/repos/asf/zeppelin/commit/ab5ce625
Tree: http://git-wip-us.apache.org/repos/asf/zeppelin/tree/ab5ce625
Diff: http://git-wip-us.apache.org/repos/asf/zeppelin/diff/ab5ce625

Branch: refs/heads/master
Commit: ab5ce6256f15ce70ef165a62d21fda0c677e96d9
Parents: fd715c8
Author: Prabhjyot Singh <[email protected]>
Authored: Mon Jun 20 23:05:10 2016 +0530
Committer: Prabhjyot Singh <[email protected]>
Committed: Wed Jun 22 17:16:31 2016 +0530

----------------------------------------------------------------------
 .../java/org/apache/zeppelin/jdbc/JDBCInterpreter.java    | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zeppelin/blob/ab5ce625/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 e9cf9f8..6312e28 100644
--- a/jdbc/src/main/java/org/apache/zeppelin/jdbc/JDBCInterpreter.java
+++ b/jdbc/src/main/java/org/apache/zeppelin/jdbc/JDBCInterpreter.java
@@ -31,6 +31,7 @@ import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.zeppelin.interpreter.Interpreter;
 import org.apache.zeppelin.interpreter.InterpreterContext;
 import org.apache.zeppelin.interpreter.InterpreterResult;
@@ -361,12 +362,11 @@ public class JDBCInterpreter extends Interpreter {
 
       return new InterpreterResult(Code.SUCCESS, msg.toString());
 
-    } catch (SQLException ex) {
-      logger.error("Cannot run " + sql, ex);
-      return new InterpreterResult(Code.ERROR, ex.getMessage());
-    } catch (ClassNotFoundException e) {
+    } catch (Exception e) {
       logger.error("Cannot run " + sql, e);
-      return new InterpreterResult(Code.ERROR, e.getMessage());
+      StringBuilder stringBuilder = new 
StringBuilder(e.getClass().toString()).append("\n");
+      stringBuilder.append(StringUtils.join(e.getStackTrace(), "\n"));
+      return new InterpreterResult(Code.ERROR, stringBuilder.toString());
     }
   }
 

Reply via email to