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)