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>