uima-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Richard Eckart de Castilho <...@apache.org>
Subject UIMAv3 & WebAnno
Date Wed, 03 Jan 2018 23:16:52 GMT
Hi again,

I have once again switched my local environment to a UIMA v3 mode:

- UIMA SDK v3 (3.0.1-beta-SNAPSHOT v3 branch)
- uimaFIT (3.0.0-SNAPSHOT v3 branch)
- DKPro Core (2.0.x branch)
- WebAnno (feature/issue1115-uimav3 branch)

Last time, I ran into trouble because the IDs loaded from serialized CAS files were no longer
accessible.
I programmatically set "uima.default_v2_id_references" to "true" during startup now to avoid
that.


But what seems to be happening even before getting there is that I run again in JCas <->
Type System problems.
When a user opens a document for annotation in WebAnno, WebAnno loads the serialized CAS (CasCompleteSerializer),
serializes the CAS into a byte array (compressed form 6), creates a new CAS with the current
type system definition,
and deserializes the data again into that CAS. The idea is that the lenient loading of the
compressed form 6 allows

  a) new types / features to be added in that way
  b) unreachable FSes to be garbage collected

So, it is not an uncommon case here that the data stored with the CasCompleteSerializer used
a different type system than the CAs into which it is loaded - and in fact it can be the case
that the data stored with the CasCompleteSerializer had used different JCas wrappers at the
time then what is available at the time of loading
the data again. Afaik in there should be no truely incompatible changes in the type system
though - i.e. only new features / types were added; no features were removed. Still, I get
a lot of this type of error:

> org.apache.uima.cas.CASRuntimeException: The JCas cannot be initialized.  The following
errors occurred: 
> In JCAS class "de.tudarmstadt.ukp.dkpro.core.api.lexmorph.type.morph.MorphologicalFeatures",
UIMA field "de.tudarmstadt.ukp.dkpro.core.api.lexmorph.type.morph.MorphologicalFeatures:verbForm"
was set up when this class was previously loaded and initialized, to have an adjusted offset
of "-1" but now the feature has a different adjusted offset of "5"; this may be due to something
else other than type system commit actions loading and initializing the JCas class, or to
having a different non-compatible type system for this class, trying to use a common JCas
cover class, which is not supported. 
> <snip> 
> 	at org.apache.uima.cas.impl.FSClassRegistry.reportErrors(FSClassRegistry.java:870) ~[classes/:?]
> 	at org.apache.uima.cas.impl.FSClassRegistry.loadJCasForTSandClassLoader(FSClassRegistry.java:342)
~[classes/:?]
> 	at org.apache.uima.cas.impl.FSClassRegistry.getGeneratorsForClassLoader(FSClassRegistry.java:904)
~[classes/:?]
> 	at org.apache.uima.cas.impl.TypeSystemImpl.getGeneratorsForClassLoader(TypeSystemImpl.java:2651)
~[classes/:?]
> 	at org.apache.uima.cas.impl.TypeSystemImpl.commit(TypeSystemImpl.java:1393) ~[classes/:?]
> 	at org.apache.uima.cas.impl.CASImpl.commitTypeSystem(CASImpl.java:1607) ~[classes/:?]
> 	at org.apache.uima.util.CasCreationUtils.doCreateCas(CasCreationUtils.java:614) ~[classes/:?]
> 	at org.apache.uima.util.CasCreationUtils.createCas(CasCreationUtils.java:362) ~[classes/:?]
> 	at org.apache.uima.util.CasCreationUtils.createCas(CasCreationUtils.java:313) ~[classes/:?]
> 	at org.apache.uima.fit.factory.JCasFactory.createJCas(JCasFactory.java:147) ~[classes/:?]
> 	at de.tudarmstadt.ukp.clarin.webanno.api.dao.AnnotationSchemaServiceImpl.upgradeCas(AnnotationSchemaServiceImpl.java:640)
~[classes/:?]

I have the feeling that this is what happens:

1) a CasCompleteSerialized-CAS is loaded - it was created at a time when the MorphologicalFeatures
did not yet have a feature called "verbForm".
2) I create a new JCas, now using a type system description where MorphologicalFeatures includes
the "verbForm" feature

At step 2, the above error seems to be triggered. I actually do not even get to the point
where I would temporarily serialize into form 6 and back. The code already crashes when trying
to set up the target task with the updated type system.

Any ideas?

Cheers,

-- Richard
Mime
View raw message