now says:
Operational data is updated while running a pipeline when a PEAR is entered
or exited,
because PEARs establish new class loaders and can potentially switch the
JCas classes being used
(This happens because the class loaders might define different JCas cover
classes
implementing the same UIMA type).
Because of this, you cannot have multiple pipelines accessing a CAS in
read-only mode if one or more of those
pipelines contains a PEAR. There are other edge cases where this may happen
as well; for example, if you are
running a pipeline with an Extension Class Loader,
and have a callback routine loaded under a different class loader, UIMA will
switch the JCas classes when
calling the callback.
-Marshall
On 8/21/2016 1:51 PM, Marshall Schor wrote:
> You are correct, in the edge case we saw earlier that triggered this line of
> thinking.
>
> If a user constructs a pipeline without PEARs, all the user code called by the
> framework is normally also loaded by the UIMA framework via that extension
> class
> loader. So normally, components using a resource manager with a custom
> extension
> classloader won't encounter this.
>
> But I'll take a crack at adding this to the docs... :-)
>
> -Marshall
>
> On 8/19/2016 5:59 PM, Richard Eckart de Castilho wrote:
>> On 19.08.2016, at 23:50, [email protected] wrote:
>>> + <para>Operational data is updated while running a pipeline when a PEAR
>>> is entered or exited,
>>> + because PEARs establish new class loaders and can potentially switch
>>> the JCas classes being used.
>>> + Because of this, you cannot have multiple pipelines accessing a CAS in
>>> read-only mode if one or more of those
>>> + pipelines contains a PEAR.
>> This applies to any components using a resource manager with a custom
>> extension classloader, right?
>> PEARs are only one specific case in which an extension classloader is being
>> used.
>>
>> Cheers,
>>
>> -- Richard
>