[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()); + } }