[hotfix] [runtime] SerializedThrowable copy constructor preserves cause

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

Branch: refs/heads/table-retraction
Commit: 03721cff116bc3d233b6b3f82c47f9edf42410af
Parents: 6f93352
Author: Stephan Ewen <se...@apache.org>
Authored: Tue May 2 19:33:28 2017 +0200
Committer: Stephan Ewen <se...@apache.org>
Committed: Tue May 2 22:49:46 2017 +0200

----------------------------------------------------------------------
 .../flink/runtime/util/SerializedThrowable.java       |  2 ++
 .../flink/runtime/util/SerializedThrowableTest.java   | 14 ++++++++++++++
 2 files changed, 16 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flink/blob/03721cff/flink-runtime/src/main/java/org/apache/flink/runtime/util/SerializedThrowable.java
----------------------------------------------------------------------
diff --git 
a/flink-runtime/src/main/java/org/apache/flink/runtime/util/SerializedThrowable.java
 
b/flink-runtime/src/main/java/org/apache/flink/runtime/util/SerializedThrowable.java
index 4dea59c..ed485d0 100644
--- 
a/flink-runtime/src/main/java/org/apache/flink/runtime/util/SerializedThrowable.java
+++ 
b/flink-runtime/src/main/java/org/apache/flink/runtime/util/SerializedThrowable.java
@@ -108,6 +108,8 @@ public class SerializedThrowable extends Exception 
implements Serializable {
                        this.originalErrorClassName = 
other.originalErrorClassName;
                        this.fullStingifiedStackTrace = 
other.fullStingifiedStackTrace;
                        this.cachedException = other.cachedException;
+                       this.setStackTrace(other.getStackTrace());
+                       this.initCause(other.getCause());
                }
        }
 

http://git-wip-us.apache.org/repos/asf/flink/blob/03721cff/flink-runtime/src/test/java/org/apache/flink/runtime/util/SerializedThrowableTest.java
----------------------------------------------------------------------
diff --git 
a/flink-runtime/src/test/java/org/apache/flink/runtime/util/SerializedThrowableTest.java
 
b/flink-runtime/src/test/java/org/apache/flink/runtime/util/SerializedThrowableTest.java
index 4d57892..45988f5 100644
--- 
a/flink-runtime/src/test/java/org/apache/flink/runtime/util/SerializedThrowableTest.java
+++ 
b/flink-runtime/src/test/java/org/apache/flink/runtime/util/SerializedThrowableTest.java
@@ -175,4 +175,18 @@ public class SerializedThrowableTest {
                assertArrayEquals(root.getStackTrace(), st.getStackTrace());
                assertEquals(ExceptionUtils.stringifyException(root), 
ExceptionUtils.stringifyException(st));
        }
+
+       @Test
+       public void testCopyPreservesCause() {
+               Exception original = new Exception("original message");
+               Exception parent = new Exception("parent message", original);
+
+               SerializedThrowable serialized = new 
SerializedThrowable(parent);
+               assertNotNull(serialized.getCause());
+
+               SerializedThrowable copy = new SerializedThrowable(serialized);
+               assertEquals("parent message", copy.getMessage());
+               assertNotNull(copy.getCause());
+               assertEquals("original message", copy.getCause().getMessage());
+       }
 }

Reply via email to