You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@uima.apache.org by Meghana <me...@germinait.com> on 2011/09/27 16:14:21 UTC

UIMA AS: ProcessCasErrors Timeout

Hi all,

We have an AS aggregate containing 10 colocated primitives, which works fine
in a non-AS setting. Some times one of the primitives waits in the monitor
(a synchronized block) for another, which never seems to come out of it!
Unfortunately, that code is not under our control, so i've set up timeouts
using asyncAggregateErrorConfiguration, and also a timeout parameter to
initialize().

The client times out correctly if the reply takes too long, but the
annotators do not! Due to that, when the client sends a _different_ request
(reusing a CAS from the same cas pool) to the AS, it logs this:
11/09/27 19:47:26 INFO input.ProcessRequestHandler_impl: Duplicate Request
With Cas Reference Id: 639041f1:132ab384912:-7fe5 Received. Ignoring
Duplicate.

And continues trying to process the older request (and remains stuck!).

What could be the problem? This is what my deployment descriptor looks like:
<analysisEngineDeploymentDescription xmlns="
http://uima.apache.org/resourceSpecifier">

    <name>AsyncAggregate</name>
    <description>Aggregate Analysis Engine Deployment</description>
    <version>1.0</version>
    <vendor>Germinait Solutions</vendor>

    <deployment protocol="jms" provider="activemq">
    <casPool numberOfCASes="2" />
    <service>
            <inputQueue endpoint="q_async_ae"
brokerURL="tcp://localhost:61616" />
            <topDescriptor>
                <import name="async.AsyncAnalysisAggregator" />
            </topDescriptor>

        <analysisEngine key="AnalysisAggregator" async="true">
                <delegates>
                    <analysisEngine key="ActionableAnnotator">
                        <asyncAggregateErrorConfiguration>
                            <processCasErrors timeout="20000"
                                continueOnRetryFailure="true" />
                        </asyncAggregateErrorConfiguration>
                    </analysisEngine>
            ...
        </delegates>
       </analysisEngine>
        </service>
    </deployment>
</analysisEngineDeploymentDescription>


Thanks a lot,

Meghana

Re: UIMA AS: ProcessCasErrors Timeout

Posted by Meghana <me...@germinait.com>.
Hey Jerry,

I see... thanks a lot.

Meghana


On 27 September 2011 21:50, Jaroslaw Cwiklik <ui...@gmail.com> wrote:

> Meghana, UIMA AS aggregate cant recover a CAS that is stuck in a collocated
> AE. You may not be observing this problem in the UIMA aggregate due to a
> fact that UIMA aggregate is single threaded. Timeouts are only supported
> for
> remotes. Try to run synchronous (UIMA) aggregate deployed in a primitive
> UIMA AS service. It would have to be single threaded due to non-thread safe
> code you are using. But you can replicate it to get better scaleout.
>
> Jerry C
>
> On Tue, Sep 27, 2011 at 10:14 AM, Meghana <meghana.marathe@germinait.com
> >wrote:
>
> > Hi all,
> >
> > We have an AS aggregate containing 10 colocated primitives, which works
> > fine
> > in a non-AS setting. Some times one of the primitives waits in the
> monitor
> > (a synchronized block) for another, which never seems to come out of it!
> > Unfortunately, that code is not under our control, so i've set up
> timeouts
> > using asyncAggregateErrorConfiguration, and also a timeout parameter to
> > initialize().
> >
> > The client times out correctly if the reply takes too long, but the
> > annotators do not! Due to that, when the client sends a _different_
> request
> > (reusing a CAS from the same cas pool) to the AS, it logs this:
> > 11/09/27 19:47:26 INFO input.ProcessRequestHandler_impl: Duplicate
> Request
> > With Cas Reference Id: 639041f1:132ab384912:-7fe5 Received. Ignoring
> > Duplicate.
> >
> > And continues trying to process the older request (and remains stuck!).
> >
> > What could be the problem? This is what my deployment descriptor looks
> > like:
> > <analysisEngineDeploymentDescription xmlns="
> > http://uima.apache.org/resourceSpecifier">
> >
> >    <name>AsyncAggregate</name>
> >    <description>Aggregate Analysis Engine Deployment</description>
> >    <version>1.0</version>
> >    <vendor>Germinait Solutions</vendor>
> >
> >    <deployment protocol="jms" provider="activemq">
> >    <casPool numberOfCASes="2" />
> >    <service>
> >            <inputQueue endpoint="q_async_ae"
> > brokerURL="tcp://localhost:61616" />
> >            <topDescriptor>
> >                <import name="async.AsyncAnalysisAggregator" />
> >            </topDescriptor>
> >
> >        <analysisEngine key="AnalysisAggregator" async="true">
> >                <delegates>
> >                    <analysisEngine key="ActionableAnnotator">
> >                        <asyncAggregateErrorConfiguration>
> >                            <processCasErrors timeout="20000"
> >                                continueOnRetryFailure="true" />
> >                        </asyncAggregateErrorConfiguration>
> >                    </analysisEngine>
> >            ...
> >        </delegates>
> >       </analysisEngine>
> >        </service>
> >    </deployment>
> > </analysisEngineDeploymentDescription>
> >
> >
> > Thanks a lot,
> >
> > Meghana
> >
>

Re: UIMA AS: ProcessCasErrors Timeout

Posted by Jaroslaw Cwiklik <ui...@gmail.com>.
Meghana, UIMA AS aggregate cant recover a CAS that is stuck in a collocated
AE. You may not be observing this problem in the UIMA aggregate due to a
fact that UIMA aggregate is single threaded. Timeouts are only supported for
remotes. Try to run synchronous (UIMA) aggregate deployed in a primitive
UIMA AS service. It would have to be single threaded due to non-thread safe
code you are using. But you can replicate it to get better scaleout.

Jerry C

On Tue, Sep 27, 2011 at 10:14 AM, Meghana <me...@germinait.com>wrote:

> Hi all,
>
> We have an AS aggregate containing 10 colocated primitives, which works
> fine
> in a non-AS setting. Some times one of the primitives waits in the monitor
> (a synchronized block) for another, which never seems to come out of it!
> Unfortunately, that code is not under our control, so i've set up timeouts
> using asyncAggregateErrorConfiguration, and also a timeout parameter to
> initialize().
>
> The client times out correctly if the reply takes too long, but the
> annotators do not! Due to that, when the client sends a _different_ request
> (reusing a CAS from the same cas pool) to the AS, it logs this:
> 11/09/27 19:47:26 INFO input.ProcessRequestHandler_impl: Duplicate Request
> With Cas Reference Id: 639041f1:132ab384912:-7fe5 Received. Ignoring
> Duplicate.
>
> And continues trying to process the older request (and remains stuck!).
>
> What could be the problem? This is what my deployment descriptor looks
> like:
> <analysisEngineDeploymentDescription xmlns="
> http://uima.apache.org/resourceSpecifier">
>
>    <name>AsyncAggregate</name>
>    <description>Aggregate Analysis Engine Deployment</description>
>    <version>1.0</version>
>    <vendor>Germinait Solutions</vendor>
>
>    <deployment protocol="jms" provider="activemq">
>    <casPool numberOfCASes="2" />
>    <service>
>            <inputQueue endpoint="q_async_ae"
> brokerURL="tcp://localhost:61616" />
>            <topDescriptor>
>                <import name="async.AsyncAnalysisAggregator" />
>            </topDescriptor>
>
>        <analysisEngine key="AnalysisAggregator" async="true">
>                <delegates>
>                    <analysisEngine key="ActionableAnnotator">
>                        <asyncAggregateErrorConfiguration>
>                            <processCasErrors timeout="20000"
>                                continueOnRetryFailure="true" />
>                        </asyncAggregateErrorConfiguration>
>                    </analysisEngine>
>            ...
>        </delegates>
>       </analysisEngine>
>        </service>
>    </deployment>
> </analysisEngineDeploymentDescription>
>
>
> Thanks a lot,
>
> Meghana
>