Miguel, I've created new jira to track this:

On Wed, Mar 9, 2016 at 12:59 AM, Miguel Alvarez <[email protected]>
wrote:

> Thanks! That helps.
>
> -----Original Message-----
> From: Eddie Epstein [mailto:[email protected]]
> Sent: March 7, 2016 6:53
> To: [email protected]
> Subject: Re: UIMA-AS: How to configure processing timeouts?
>
> Miguel,
>
> A number of possibilities.
>
> If the UIMA-AS process is scaling vertically across multiple threads, and
> the long document processing is not invalidating the computation internals,
> then periodically test document processing time in the application logic
> and stop processing the document by throwing an
> AnalysisEngineProcessException.
>
> If there are multiple UIMA-AS services, consider running batch jobs with
> DUCC. On a processing timeout DUCC will automatically kill and restart the
> affected JobProcess (which in general contains multiple pipeline instances,
> each running in a different thread), and resubmit other documents that were
> co-resident in the JP.
>
> If the processing timeout and/or OOM conditions are being caused by large
> document, use a CasMultiplier to split up large documents and run them in
> pieces and use another CasMultiplier to reassemble the pieces. Core UIMA
> has some sample code that does this.
>
> In general a JVM does not survive an OOM unharmed.
>
> Eddie
>
>
> On Sun, Mar 6, 2016 at 7:22 PM, Miguel Alvarez <[email protected]>
> wrote:
>
> > Hi Eddie,
> >
> > Thanks for the prompt reply, and the clarification. Now I know : )
> >
> > At the moment I am just exploring options, and I am not sure the best
> > option for me is to terminate the UIMA-AS service. Sometimes the
> > processing of a document takes very long (due to the logic the engines
> > have), and I would like to skip the processing of those documents
> > altogether but without having to terminate the service (basically just
> > cancel the processing of that document but maintain the service
> > running so it can process the next one). I am not sure if UIMA-AS
> supports anything like this.
> >
> > And on a similar note, in very rare occasions our engines will run out
> > of memory. Is there a way for an UIMA-AS service to recover from an OOM
> error?
> >
> > Thanks again for your help.
> >
> > Sincerely,
> > Miguel
> >
> > -----Original Message-----
> > From: Eddie Epstein [mailto:[email protected]]
> > Sent: March 6, 2016 13:57
> > To: [email protected]
> > Subject: Re: UIMA-AS: How to configure processing timeouts?
> >
> > Hi,
> >
> > I think UIMA-AS documentation is missing important information on the
> > processCas timeout, which is that this timeout only works for remote
> > delegates. Arbitrary in-process code cannot be interrupted without
> > destroying the JVM. Since the input CAS sent to remote delegates is
> > saved locally, the error handling allows that delegate to be skipped
> > and processing on the CAS to continue.
> >
> > Would it be useful for you in this situation, timeout for an
> > in-process delegate, to simply have the UIMA-AS service terminate?
> >
> > Eddie
> >
> >
> > On Sun, Mar 6, 2016 at 4:36 PM, Miguel Alvarez <[email protected]>
> > wrote:
> >
> > > Hi,
> > >
> > >
> > >
> > > When using UIMA-AS I would like to have a timeout that would stop
> > > the processing of a CAS document in case it is taking too long. When
> > > I read the documentation it seems like this should be possible, but
> > > for some reason it doesn't seem to be working for me, probably
> > > because I am configuring something wrong. I am using version 2.6.0
> > > and Java 7
> > >
> > >
> > >
> > > The UIMA-AS deployment descriptor contains a top level engine that
> > > is an aggregate engine descriptor which contains only one primitive
> > > AE using a "fixed flow". Find below the descriptor I am using (in
> > > this case the processing of a document should timeout after 1
> > > second, right?), and I have tried multiple combinations of the
> > > settings, but for some reason I am not able to make the processing of
> a CAS timeout.
> > >
> > >
> > >
> > > I have also tried the timeout on the client side, and that one works
> > fine.
> > >
> > >
> > >
> > > What am I doing wrong? Does the delegate need to be a remote service
> > > for these timeouts to work? Does the delegate need to be pointing to
> > > another aggregate engine that wraps the primitive engine?
> > >
> > >
> > >
> > > Thanks,
> > >
> > > Miguel
> > >
> > >
> > >
> > > <?xml version="1.0"
> > > encoding="UTF-8"?><analysisEngineDeploymentDescription
> > > xmlns="http://uima.apache.org/resourceSpecifier";>
> > >
> > >   <name>UIMA-AS MyEngine</name>
> > >
> > >   <description>Processes the document.</description>
> > >
> > >   <version/>
> > >
> > >   <vendor/>
> > >
> > >   <deployment protocol="jms" provider="activemq">
> > >
> > >     <casPool numberOfCASes="1" initialFsHeapSize="2000000"/>
> > >
> > >     <service>
> > >
> > >       <inputQueue endpoint="MyService" brokerURL="${defaultBrokerURL}"
> > > prefetch="1"/>
> > >
> > >       <topDescriptor>
> > >
> > >         <import location="MyAggregate.xml"/>
> > >
> > >       </topDescriptor>
> > >
> > >       <analysisEngine async="true">
> > >
> > >         <delegates>
> > >
> > >           <analysisEngine key="MyPrimitiveEngine" async="false">
> > >
> > >             <scaleout numberOfInstances="2"/>
> > >
> > >             <casMultiplier poolSize="1" initialFsHeapSize="2000000"
> > > processParentLast="false"/>
> > >
> > >             <asyncAggregateErrorConfiguration>
> > >
> > >               <getMetadataErrors maxRetries="0" timeout="0"
> > > errorAction="terminate"/>
> > >
> > >               <processCasErrors maxRetries="5" timeout="1000"
> > > continueOnRetryFailure="false" thresholdCount="10"
> > thresholdWindow="10000"
> > > thresholdAction="terminate"/>
> > >
> > >               <collectionProcessCompleteErrors timeout="0"
> > > additionalErrorAction="terminate"/>
> > >
> > >             </asyncAggregateErrorConfiguration>
> > >
> > >           </analysisEngine>
> > >
> > >         </delegates>
> > >
> > >         <asyncPrimitiveErrorConfiguration>
> > >
> > >           <processCasErrors thresholdCount="0" thresholdWindow="0"
> > > thresholdAction="terminate"/>
> > >
> > >           <collectionProcessCompleteErrors timeout="0"
> > > additionalErrorAction="terminate"/>
> > >
> > >         </asyncPrimitiveErrorConfiguration>
> > >
> > >       </analysisEngine>
> > >
> > >     </service>
> > >
> > >   </deployment>
> > >
> > > </analysisEngineDeploymentDescription>
> > >
> > >
> > >
> > >
> >
> >
>
>

Reply via email to