Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
2.7.0SDK
-
None
Description
Eddie found that a simple pipeline he wrote using an OpenNLP aggregate, for a DUCC test, occasionally failed with a certain combination of Java's, machines, data-being-processed. (It was pretty rare). The failure was java.lang.LinkageError: – the java class that was trying to be loaded --, and, for the failing Java, no other details (other than the stack trace. The failure only happened if the OpenNlp aggregate was scaled out to run on multiple threads.
Cause was traced to a small detail documented here in Java 7 info on implementing Multithreaded ClassLoading: http://docs.oracle.com/javase/7/docs/technotes/guides/lang/cl-mt.html .
The UIMA Class loader was changed to support parallel class loading for Java 7 and beyond.
The problem is that the implementation didn't notice that the class loader using this facility has to have a mechanism to insure that "the protected defineClass() method is called only once for each class loader and class name pair." The UIMA class loader fails to do this, and I think that's what's causing this issue.