spark git commit: [SPARK-20459][SQL] JdbcUtils throws IllegalStateException: Cause already initialized after getting SQLException

2017-05-01 Thread lixiao
Repository: spark
Updated Branches:
  refs/heads/master 2b2dd08e9 -> af726cd61


[SPARK-20459][SQL] JdbcUtils throws IllegalStateException: Cause already 
initialized after getting SQLException

## What changes were proposed in this pull request?

Avoid failing to initCause on JDBC exception with cause initialized to null

## How was this patch tested?

Existing tests

Author: Sean Owen 

Closes #17800 from srowen/SPARK-20459.


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

Branch: refs/heads/master
Commit: af726cd6117de05c6e3b9616b8699d884a53651b
Parents: 2b2dd08
Author: Sean Owen 
Authored: Mon May 1 17:01:05 2017 -0700
Committer: Xiao Li 
Committed: Mon May 1 17:01:05 2017 -0700

--
 .../spark/sql/execution/datasources/jdbc/JdbcUtils.scala | 11 ++-
 1 file changed, 10 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/spark/blob/af726cd6/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/JdbcUtils.scala
--
diff --git 
a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/JdbcUtils.scala
 
b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/JdbcUtils.scala
index 5fc3c27..0183805 100644
--- 
a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/JdbcUtils.scala
+++ 
b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/JdbcUtils.scala
@@ -652,8 +652,17 @@ object JdbcUtils extends Logging {
   case e: SQLException =>
 val cause = e.getNextException
 if (cause != null && e.getCause != cause) {
+  // If there is no cause already, set 'next exception' as cause. If 
cause is null,
+  // it *may* be because no cause was set yet
   if (e.getCause == null) {
-e.initCause(cause)
+try {
+  e.initCause(cause)
+} catch {
+  // Or it may be null because the cause *was* explicitly 
initialized, to *null*,
+  // in which case this fails. There is no other way to detect it.
+  // addSuppressed in this case as well.
+  case _: IllegalStateException => e.addSuppressed(cause)
+}
   } else {
 e.addSuppressed(cause)
   }


-
To unsubscribe, e-mail: commits-unsubscr...@spark.apache.org
For additional commands, e-mail: commits-h...@spark.apache.org



spark git commit: [SPARK-20459][SQL] JdbcUtils throws IllegalStateException: Cause already initialized after getting SQLException

2017-05-01 Thread lixiao
Repository: spark
Updated Branches:
  refs/heads/branch-2.2 cfa6bcbe8 -> 5a0a8b039


[SPARK-20459][SQL] JdbcUtils throws IllegalStateException: Cause already 
initialized after getting SQLException

## What changes were proposed in this pull request?

Avoid failing to initCause on JDBC exception with cause initialized to null

## How was this patch tested?

Existing tests

Author: Sean Owen 

Closes #17800 from srowen/SPARK-20459.

(cherry picked from commit af726cd6117de05c6e3b9616b8699d884a53651b)
Signed-off-by: Xiao Li 


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

Branch: refs/heads/branch-2.2
Commit: 5a0a8b0396df2feadb8333876cc08edf219fa177
Parents: cfa6bcb
Author: Sean Owen 
Authored: Mon May 1 17:01:05 2017 -0700
Committer: Xiao Li 
Committed: Mon May 1 17:01:13 2017 -0700

--
 .../spark/sql/execution/datasources/jdbc/JdbcUtils.scala | 11 ++-
 1 file changed, 10 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/spark/blob/5a0a8b03/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/JdbcUtils.scala
--
diff --git 
a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/JdbcUtils.scala
 
b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/JdbcUtils.scala
index 5fc3c27..0183805 100644
--- 
a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/JdbcUtils.scala
+++ 
b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/JdbcUtils.scala
@@ -652,8 +652,17 @@ object JdbcUtils extends Logging {
   case e: SQLException =>
 val cause = e.getNextException
 if (cause != null && e.getCause != cause) {
+  // If there is no cause already, set 'next exception' as cause. If 
cause is null,
+  // it *may* be because no cause was set yet
   if (e.getCause == null) {
-e.initCause(cause)
+try {
+  e.initCause(cause)
+} catch {
+  // Or it may be null because the cause *was* explicitly 
initialized, to *null*,
+  // in which case this fails. There is no other way to detect it.
+  // addSuppressed in this case as well.
+  case _: IllegalStateException => e.addSuppressed(cause)
+}
   } else {
 e.addSuppressed(cause)
   }


-
To unsubscribe, e-mail: commits-unsubscr...@spark.apache.org
For additional commands, e-mail: commits-h...@spark.apache.org