uima-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jerry Cwiklik (JIRA)" <...@uima.apache.org>
Subject [jira] [Updated] (UIMA-5529) DUCC: Serialization of AnalysisEngineProcessException fails in JP
Date Tue, 08 Aug 2017 19:10:00 GMT

     [ https://issues.apache.org/jira/browse/UIMA-5529?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Jerry Cwiklik updated UIMA-5529:
--------------------------------
    Description: 
If AE process() fails, the JP tries to serialize the exception before sending it to the JD.
The AE throws a UIMA core AnalysisEngineProcessException which fails to serialize with:

java.io.NotSerializableException: sun.misc.Launcher$AppClassLoader

It turns out that this is caused by changes made to the InternationalizedException class as
described in JIRA https://issues.apache.org/jira/browse/UIMA-4793
The fix discussed in the JIRA broke serialization of uima exceptions. The InternationalizedException
 class contains a member variable of type ClassLoader which is not Serializable. 

For Ducc, the fix is to avoid Object serialization of the AnalysisEngineProcessException and
use this instead:
            StringWriter sw = new StringWriter();
            t.printStackTrace(new PrintWriter(sw));
            serializedCause =  sw.toString();

where t = AnalysisEngineProcessException 

The entire stack trace is captured as a String then wrapped in a java RuntimeException and
sent to the JD for logging. 

Also, add a new job to the DUCC_HOME/example/simple 1-error.job which forces AE to throw an
error.

  was:
If AE process() fails, the JP tries to serialize the exception before sending it to the JD.
The AE throws a UIMA core AnalysisEngineProcessException which fails to serialize with:

java.io.NotSerializableException: sun.misc.Launcher$AppClassLoader

It turns out that this is caused by changes made to the InternationalizedException class as
described in JIRA https://issues.apache.org/jira/browse/UIMA-4793
The fixed discussed in the JIRA broke serialization of uima exceptions. The InternationalizedException
 class contains a member variable of type ClassLoader which is not serializable. 

For Ducc the fix is to avoid serialization of the Exception object and instead using this:
            StringWriter sw = new StringWriter();
            t.printStackTrace(new PrintWriter(sw));
            serializedCause =  sw.toString();

where t = AnalysisEngineProcessException 
The entire stack trace is captured as String, wrapped in java RuntimeException and sent to
the JD for logging. 
Also, add a new job to the DUCC_HOME/example/simple 1-error.job which forces AE to throw an
error.


> DUCC: Serialization of AnalysisEngineProcessException fails in JP
> -----------------------------------------------------------------
>
>                 Key: UIMA-5529
>                 URL: https://issues.apache.org/jira/browse/UIMA-5529
>             Project: UIMA
>          Issue Type: Bug
>          Components: DUCC
>            Reporter: Jerry Cwiklik
>            Assignee: Jerry Cwiklik
>             Fix For: 2.1.0-Ducc
>
>
> If AE process() fails, the JP tries to serialize the exception before sending it to the
JD. The AE throws a UIMA core AnalysisEngineProcessException which fails to serialize with:
> java.io.NotSerializableException: sun.misc.Launcher$AppClassLoader
> It turns out that this is caused by changes made to the InternationalizedException class
as described in JIRA https://issues.apache.org/jira/browse/UIMA-4793
> The fix discussed in the JIRA broke serialization of uima exceptions. The InternationalizedException
 class contains a member variable of type ClassLoader which is not Serializable. 
> For Ducc, the fix is to avoid Object serialization of the AnalysisEngineProcessException
and use this instead:
>             StringWriter sw = new StringWriter();
>             t.printStackTrace(new PrintWriter(sw));
>             serializedCause =  sw.toString();
> where t = AnalysisEngineProcessException 
> The entire stack trace is captured as a String then wrapped in a java RuntimeException
and sent to the JD for logging. 
> Also, add a new job to the DUCC_HOME/example/simple 1-error.job which forces AE to throw
an error.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Mime
View raw message