uima-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jaroslaw Cwiklik <uim...@gmail.com>
Subject Re: Possible cause of nullPointerException in casmultiplier?
Date Mon, 28 Nov 2016 18:09:48 GMT
An input CAS should not be released in the AE (user code). The Flow
Controller should be used
to prevent a CAS from flowing downstream. UIMA-AS will try to release a CAS
in a Final Step
of processing and this may cause an error like

"The system tried to return a common analysis structure to the pool from
which it was not checked out."

Jerry


On Mon, Nov 28, 2016 at 12:40 PM, nelson rivera <nelsonrivera12@gmail.com>
wrote:

> I have deployed the aggregate of asynchronous way.
>  And i configure this aggregate to processing one request at the same
> time(numberOfCASes=1,default), because as i commented on previous
> email, in my flow: The first casmultiplier receive a annotation with
> the path of a folder and creates a new child cas for each file in the
> folder, the child cas
> continue the flow in the other primitive annotators and at the end it
> go to the second casmultipler, in the second casmultipler can or not
> create new child cas, in the case of not i release the cas. I am
> assuming (numberOfCASes=1,default) that until all child has finished
> its processing, the aggregate not going processing other input cas of
> other request, it is correct?.
>
>
>
> 2016-11-28 12:00 GMT-05:00, Jaroslaw Cwiklik <uimaee@gmail.com>:
> > Nelson, this error:
> >
> > "The system tried to return a common analysis structure to the pool from
> > which it was not checked out."
> >
> > I think this is caused if you try to release a CAS that has been
> previously
> > released. Sure you
> > are not trying to release it twice? I think releasing an input CAS in AE
> > code is not a good idea. I am assuming
> > you have an asynchronous aggregate (queue in front of each AE). In such
> > deployments, the UIMA-AS is
> > responsible for releasing a CAS once it reaches a Final state. Within a
> > synchronous aggregate I am not sure
> > if you are allowed to release a CAS in your code. Perhaps others can
> chime
> > in. Can you confirm which
> > deployment you chose for this aggregate (synch or asynch)
> > Jerry
> >
> > On Fri, Nov 25, 2016 at 11:14 AM, nelson rivera <
> nelsonrivera12@gmail.com>
> > wrote:
> >
> >> The errores related are very random. I found a patron of error ( don't
> >> know if it's the only one): The caspool of the first casmultipler
> >> have size of 8, if i send a request to the aggregate in which the
> >> first casmultipler have to generate more than 8 child cas, i get
> >> random errors, the childs cas generated after the number 8, sometimes
> >> is empty, sometimes have less annotations than it should have (I see
> >> this with a own XCasSerializer annotator) or get nullPointerException.
> >> I don't know why can happen, because in the method "process()" of the
> >> second casmultipler i release the incoming cas (aJCas.release();)
> >> directly in my source code, for that the caspool of the first
> >> casmultipler will not empty. There is something taht i am not doing
> >> well?
> >>
> >> I don't have idea what may be going on?, i will appreciate the help
> >>
> >> 2016-11-24 19:24 GMT-05:00, nelson rivera <nelsonrivera12@gmail.com>:
> >> > I continued investigating  and according to the stacktrace and source
> >> > code of of FSIndexRepositoryImpl.ll_addFS_common() the exception is
> >> > from line 2805 , in this part
> >> >
> >> > final ArrayList<IndexIteratorCachePair<? extends FeatureStructure>>
> >> > indexes = this.indexArray[typeCode];
> >> >     // Add fsRef to all indexes.
> >> >     boolean noIndexOrOnlySetindexes = true;
> >> > for (IndexIteratorCachePair<? extends FeatureStructure> iicp :
> >> > indexes) {}     //here
> >> >
> >> > apparently loop on a null value, any idea of why can happen this
> >> exception?
> >> >
> >> > 2016-11-24 16:27 GMT-05:00, nelson rivera <nelsonrivera12@gmail.com>:
> >> >> the error continue ocurring , this is the log, my casmultiplier is
> >> >> FileSystemMultiplerCas
> >> >>
> >> >> 04:04:17.520 - 23:
> >> >> cu.datys.xinetica.uima.core.FileSystemMultiplerCas.next(334): INFO:
> >> >> Adicionando annotation tipo cu.datys.xinetica.uima.ContinueOnFailure
> >> >> 04:04:17.522 - 23: org.apache.uima.util.CasPool.releaseCas: WARNING:
> >> >> The system tried to return a common analysis structure to the pool
> >> >> from which it was not checked out.
> >> >> 04:04:17.523 - 23:
> >> >> org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.
> >> callAnalysisComponentNext(549):
> >> >> SEVERE: Exception occurred
> >> >> org.apache.uima.analysis_engine.AnalysisEngineProcessException
> >> >>      at
> >> >> cu.datys.xinetica.uima.core.FileSystemMultiplerCas.next(
> >> FileSystemMultiplerCas.java:351)
> >> >>      at
> >> >> org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.
> >> callAnalysisComponentNext(PrimitiveAnalysisEngine_impl.java:526)
> >> >>      at
> >> >> org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl$
> >> AnalysisComponentCasIterator.next(PrimitiveAnalysisEngine_
> impl.java:647)
> >> >>      at
> >> >> org.apache.uima.aae.controller.PrimitiveAnalysisEngineControl
> >> ler_impl.process(PrimitiveAnalysisEngineController_impl.java:860)
> >> >>      at
> >> >> org.apache.uima.aae.handler.HandlerBase.invokeProcess(
> >> HandlerBase.java:121)
> >> >>      at
> >> >> org.apache.uima.aae.handler.input.ProcessRequestHandler_impl.
> >> handleProcessRequestWithCASReference(ProcessRequestHandler_
> impl.java:795)
> >> >>      at
> >> >> org.apache.uima.aae.handler.input.ProcessRequestHandler_impl.handle(
> >> ProcessRequestHandler_impl.java:1055)
> >> >>      at
> >> >> org.apache.uima.aae.spi.transport.vm.UimaVmMessageListener.
> onMessage(
> >> UimaVmMessageListener.java:107)
> >> >>      at
> >> >> org.apache.uima.aae.spi.transport.vm.UimaVmMessageDispatcher$1.run(
> >> UimaVmMessageDispatcher.java:70)
> >> >>      at
> >> >> java.util.concurrent.ThreadPoolExecutor.runWorker(
> >> ThreadPoolExecutor.java:1145)
> >> >>      at
> >> >> java.util.concurrent.ThreadPoolExecutor$Worker.run(
> >> ThreadPoolExecutor.java:615)
> >> >>      at
> >> >> org.apache.uima.aae.UimaAsThreadFactory$1.run(
> >> UimaAsThreadFactory.java:132)
> >> >>      at java.lang.Thread.run(Thread.java:745)
> >> >> Caused by: java.lang.NullPointerException
> >> >>      at
> >> >> org.apache.uima.cas.impl.FSIndexRepositoryImpl.ll_addFS_common(
> >> FSIndexRepositoryImpl.java:2805)
> >> >>      at
> >> >> org.apache.uima.cas.impl.FSIndexRepositoryImpl.ll_
> >> addFS(FSIndexRepositoryImpl.java:2763)
> >> >>      at
> >> >> org.apache.uima.cas.impl.FSIndexRepositoryImpl.addFS(
> >> FSIndexRepositoryImpl.java:2068)
> >> >>      at
> >> >> org.apache.uima.cas.impl.FSIndexRepositoryImpl.addFS(
> >> FSIndexRepositoryImpl.java:2674)
> >> >>      at org.apache.uima.cas.impl.CASImpl.addFsToIndexes(
> >> CASImpl.java:5023)
> >> >>      at org.apache.uima.jcas.impl.JCasImpl.addFsToIndexes(
> >> JCasImpl.java:1525)
> >> >>      at
> >> >> cu.datys.xinetica.uima.core.FileSystemMultiplerCas.next(
> >> FileSystemMultiplerCas.java:337)
> >> >>
> >> >>
> >> >> 2016-11-23 16:14 GMT-05:00, nelson rivera <nelsonrivera12@gmail.com
> >:
> >> >>> I have a aggregate service that contains in the flow in this order
:
> >> >>> 1
> >> >>> casmultiplier, then 2 primitive annotators and at the end other
> >> >>> casmultiplier.
> >> >>> The first casmultiplier receive a annotation with the path of a
> >> >>> folder
> >> >>> and creates a new child cas for each file in the folder, the child
> >> >>> cas
> >> >>> continue the flow in the other primitive annotators and at the
end
> it
> >> >>> go to the second casmultipler, in the second casmultipler can or
not
> >> >>> create new child cas, in the case of not, in the  method process()
i
> >> >>> release de cas (aJCas.release();) directly in my source code.
> >> >>>
> >> >>> This aggregate service is deploys in uima-as and configure for
> >> >>> processing only one request at the same time <casPool
> >> >>> numberOfCASes="1"/>.  For any reason, sometimes and of aleatorie
way
> >> >>> ,
> >> >>> making many requests to the service from many thread concurrent,
in
> >> >>> the first casmultiplier in method next() after get the new cas
(JCas
> >> >>> jcas = getEmptyJCas()) and while populate the cas , apparently
some
> >> >>> external component in another parallel thread modifys this obtained
> >> >>> cas, and i get a NullPointerException adding a annotation
> >> >>> (jcas.addFsToIndexes(copyOfFs);) in method next().
> >> >>>
> >> >>> Any idea of what may be going on?
> >> >>>
> >> >>> this is the descriptor uima-as:
> >> >>>
> >> >>>
> >> >>> <?xml version="1.0" encoding="UTF-8"?>
> >> >>> <analysisEngineDeploymentDescription
> >> >>>     xmlns="http://uima.apache.org/resourceSpecifier">
> >> >>>
> >> >>>     <name>XPlagiarismCheckerAggregateAE Deploy Descriptor</name>
> >> >>>     <description>Deploys XPlagiarismCheckerAggregateAE<
> /description>
> >> >>>
> >> >>>     <deployment protocol="jms" provider="activemq">
> >> >>>         <service>
> >> >>>             <inputQueue endpoint="XPlagiarismCheckerAggregate"
> >> >>> brokerURL="${defaultBrokerURL}"/>
> >> >>>             <topDescriptor>
> >> >>>                 <import
> >> >>> location="./XPlagiarismCheckerAggregate.xml"/>
> >> >>>             </topDescriptor>
> >> >>>             <analysisEngine inputQueueScaleout="2"
> >> >>> internalReplyQueueScaleout="3">
> >> >>>                 <delegates>
> >> >>>                     <analysisEngine key="FileSystemMultiplerCas">
> >> >>>                         <casMultiplier poolSize="6"/>
> >> >>>                     </analysisEngine>
> >> >>>                     <analysisEngine key="XFileFormatDetector">
> >> >>>                         <scaleout numberOfInstances="2"/>
> >> >>>                         <asyncAggregateErrorConfiguration>
> >> >>>                             <processCasErrors maxRetries="0"
> >> >>> continueOnRetryFailure="true"/>
> >> >>>                         </asyncAggregateErrorConfiguration>
> >> >>>                     </analysisEngine>
> >> >>>                     <analysisEngine key="XDataFileExtractor">
> >> >>>                         <scaleout numberOfInstances="2"/>
> >> >>>                         <asyncAggregateErrorConfiguration>
> >> >>>                             <processCasErrors maxRetries="0"
> >> >>> continueOnRetryFailure="true"/>
> >> >>>                         </asyncAggregateErrorConfiguration>
> >> >>>                     </analysisEngine>
> >> >>>                     <analysisEngine key="XTokenizer">
> >> >>>                         <scaleout numberOfInstances="2"/>
> >> >>>                         <asyncAggregateErrorConfiguration>
> >> >>>                             <processCasErrors maxRetries="0"
> >> >>> continueOnRetryFailure="true"/>
> >> >>>                         </asyncAggregateErrorConfiguration>
> >> >>>                     </analysisEngine>
> >> >>>                     <analysisEngine key="
> MergerBasePairCasMultipler">
> >> >>>                         <casMultiplier poolSize="2"/>
> >> >>>                     </analysisEngine>
> >> >>>                     <analysisEngine key="XPlagiarismChecker">
> >> >>>                         <scaleout numberOfInstances="2"/>
> >> >>>                         <asyncAggregateErrorConfiguration>
> >> >>>                             <processCasErrors maxRetries="0"
> >> >>> continueOnRetryFailure="true"/>
> >> >>>                         </asyncAggregateErrorConfiguration>
> >> >>>                     </analysisEngine>
> >> >>>                 </delegates>
> >> >>>             </analysisEngine>
> >> >>>         </service>
> >> >>>     </deployment>
> >> >>> </analysisEngineDeploymentDescription>
> >> >>>
> >> >>
> >> >
> >>
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message