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> >> > > >> > > >> > > >> > > >> > >> > >> >> >
