Sorry fat fingers. The new jira is
https://issues.apache.org/jira/browse/UIMA-4828?filter=-1

Will fix UIMA-AS documentation for the next release candidate.

Thanks for reporting this
Jerry

On Wed, Mar 9, 2016 at 11:37 AM, Jaroslaw Cwiklik <[email protected]> wrote:

> 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