uima-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From nelson rivera <nelsonriver...@gmail.com>
Subject Re: Possible cause of nullPointerException in casmultiplier?
Date Tue, 29 Nov 2016 21:22:03 GMT
You are absolutely right, I should not release the input CAS in my AE.
This was apparently the cause of the error. thank you very much

2016-11-28 13:09 GMT-05:00, Jaroslaw Cwiklik <uimaee@gmail.com>:
> 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
View raw message