Uploaded image for project: 'UIMA'
  1. UIMA
  2. UIMA-5529

DUCC: Serialization of AnalysisEngineProcessException fails in JP

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 2.2.1-Ducc
    • DUCC
    • None

    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.

      Attachments

        Activity

          People

            cwiklik Jaroslaw Cwiklik
            cwiklik Jaroslaw Cwiklik
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: