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

DUCC: Serialization of AnalysisEngineProcessException fails in JP

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.2.1-Ducc
    • Component/s: DUCC
    • Labels:
      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

            • Assignee:
              cwiklik Jerry Cwiklik
              Reporter:
              cwiklik Jerry Cwiklik
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: