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 <nelsonriver...@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 <nelsonriver...@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 <nelsonriver...@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 <nelsonriver...@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> > >>> > >> > > >