[ https://issues.apache.org/jira/browse/UIMA-5097?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15456087#comment-15456087
]
Marshall Schor commented on UIMA-5097:
--------------------------------------
I don't think this is a design decision, and, it's not possible for a component to do a cas.reset()
inside its process() method - that operation is "locked out". See method switchClassLoaderLockCasCL
in CASImpl, line 4291, where it calls "enableReset(false)" which sets the shared view data's
"flushEnabled" to false.
> Current component info on CAS not reset
> ---------------------------------------
>
> Key: UIMA-5097
> URL: https://issues.apache.org/jira/browse/UIMA-5097
> Project: UIMA
> Issue Type: Bug
> Components: Core Java Framework
> Reporter: Richard Eckart de Castilho
> Assignee: Marshall Schor
> Attachments: UIMA5097SuiteTest.java
>
>
> uimaFIT tests re-use a single CAS which is stored in a thread-local variable and reset
that CAS between unit tests. Apparently there was some change which causes the Sofa-mapping
information - or more specifically the current component info from which that mapping is obtained
- to not be reset anymore. The problem only appears when running all uimafit-core tests jointly
in one JVM, e.g. from Eclipse.
> Initial hypothesis which proved to be wrong:
> There may be a bug that might be related to the UimaContextHolder not being cleaned up
probably (probably in case of some kind of failure).
> The problem appears when running the uimafit-core tests in Eclipse. Here all tests run
in the same JVM instance which allows "global" information like thread locals to be carried
over between unit tests.
> Then running all tests and when the `ViewCreatorAnnotatorTest` runs before the `SimplePipelineTest`,
then the deserialization of an XMI file fails because `_InitialView` is still mapped to `myView`
in the UIMA context. Debugging yields that the UIMAContext in use for the SimplePipelineTest
apparently still belongs to the `ViewCreatorAnnotatorTest` because the *mQualifiedContextName*
is `/org.apache.uima.fit.component.ViewCreatorAnnotatorTest$SofaAwareAnnotator/`
> This hypothesis was wrong: checked it by verifying that UimaContextHolder.getContext()
is null before and after each unit test.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
|