You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@daffodil.apache.org by "Steve Lawrence (Jira)" <ji...@apache.org> on 2019/11/22 16:08:00 UTC
[jira] [Resolved] (DAFFODIL-2235) Exception when UDF object
contains nonSerializable field
[ https://issues.apache.org/jira/browse/DAFFODIL-2235?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Steve Lawrence resolved DAFFODIL-2235.
--------------------------------------
Resolution: Fixed
Fixed in commit a098134a4c33bd5052f39cd5030d16f2db5dd591
> Exception when UDF object contains nonSerializable field
> --------------------------------------------------------
>
> Key: DAFFODIL-2235
> URL: https://issues.apache.org/jira/browse/DAFFODIL-2235
> Project: Daffodil
> Issue Type: Bug
> Affects Versions: 2.5.0
> Reporter: Olabusayo Kilo
> Assignee: Olabusayo Kilo
> Priority: Major
> Fix For: 2.5.0
>
>
> While we check if UDF classes are serializable, we don't check if the initialized UDF object is serializable, which can lead to the below exception when compiling. We should do a check during UDF initialization to see if it's serializable and error out if it's not.
> {code:java}
> java.io.IOException: unexpected exception type
> at java.io.ObjectStreamClass.throwMiscException(ObjectStreamClass.java:1736)
> at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1146)
> at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496)
> at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
> at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
> at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:441)
> at org.apache.daffodil.util.PreSerialization.serializeObject(Serialize.scala:46)
> at org.apache.daffodil.util.PreSerialization.serializeObject$(Serialize.scala:42)
> at org.apache.daffodil.dsom.DPathCompileInfo.serializeObject(CompiledExpression1.scala:202)
> at org.apache.daffodil.dsom.DPathCompileInfo.writeObject(CompiledExpression1.scala:229)
> ....
> Caused by: org.apache.daffodil.exceptions.Abort: Could not serialize member of class com.example.NonSerializableClass, found within class ElementRuntimeData
> org.apache.daffodil.exceptions.Assert$.abort(Assert.scala:129)
> org.apache.daffodil.util.PreSerialization.serializeObject(Serialize.scala:49)
> org.apache.daffodil.util.PreSerialization.serializeObject$(Serialize.scala:42)
> org.apache.daffodil.processors.TermRuntimeData.serializeObject(RuntimeData.scala:99)
> at org.apache.daffodil.exceptions.Assert$.abort(Assert.scala:129)
> at org.apache.daffodil.util.PreSerialization.serializeObject(Serialize.scala:49)
> at org.apache.daffodil.util.PreSerialization.serializeObject$(Serialize.scala:42)
> at org.apache.daffodil.processors.TermRuntimeData.serializeObject(RuntimeData.scala:99)
> at org.apache.daffodil.processors.ElementRuntimeData.writeObject(RuntimeData.scala:741)
> at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)