diff options
author | Reynold Xin <rxin@databricks.com> | 2015-01-30 22:34:10 -0800 |
---|---|---|
committer | Reynold Xin <rxin@databricks.com> | 2015-01-30 22:34:10 -0800 |
commit | 740a56862ba82aeb4206edf71ce83dc4475e322a (patch) | |
tree | ec84e700c7df51be101b2e99d5655ddeb1cf122f /sql/core | |
parent | e643de42a70834dc967664bd297b58fc91a998e7 (diff) | |
download | spark-740a56862ba82aeb4206edf71ce83dc4475e322a.tar.gz spark-740a56862ba82aeb4206edf71ce83dc4475e322a.tar.bz2 spark-740a56862ba82aeb4206edf71ce83dc4475e322a.zip |
[SPARK-5307] SerializationDebugger
This patch adds a SerializationDebugger that is used to add serialization path to a NotSerializableException. When a NotSerializableException is encountered, the debugger visits the object graph to find the path towards the object that cannot be serialized, and constructs information to help user to find the object.
The patch uses the internals of JVM serialization (in particular, heavy usage of ObjectStreamClass). Compared with an earlier attempt, this one provides extra information including field names, array offsets, writeExternal calls, etc.
An example serialization stack:
```
Serialization stack:
- object not serializable (class: org.apache.spark.serializer.NotSerializable, value: org.apache.spark.serializer.NotSerializable2c43caa4)
- element of array (index: 0)
- array (class [Ljava.lang.Object;, size 1)
- field (class: org.apache.spark.serializer.SerializableArray, name: arrayField, type: class [Ljava.lang.Object;)
- object (class org.apache.spark.serializer.SerializableArray, org.apache.spark.serializer.SerializableArray193c5908)
- writeExternal data
- externalizable object (class org.apache.spark.serializer.ExternalizableClass, org.apache.spark.serializer.ExternalizableClass320bdadc)
```
Author: Reynold Xin <rxin@databricks.com>
Closes #4098 from rxin/SerializationDebugger and squashes the following commits:
553b3ff [Reynold Xin] Update SerializationDebuggerSuite.scala
572d0cb [Reynold Xin] Disable automatically when reflection fails.
b349b77 [Reynold Xin] [SPARK-5307] SerializationDebugger to help debug NotSerializableException - take 2
Diffstat (limited to 'sql/core')
0 files changed, 0 insertions, 0 deletions