Just a bit more evidence. The caller of the gerSofaAddr() public void writeViewsCommons() throws Exception { // Get indexes for each SofaFS in the CAS int numViews = cas.getBaseSofaCount();
for (int sofaNum = 1; sofaNum <= numViews; sofaNum++) { FSIndexRepositoryImpl loopIR = (FSIndexRepositoryImpl) cas.getBaseCAS().getSofaIndexRepository(sofaNum); final int sofaAddr = getSofaAddr(sofaNum); Not an expert of this code, but it smells like another thread is changing a CAS which is being serialized. -jerry On Fri, Feb 10, 2017 at 4:31 PM, Jaroslaw Cwiklik <uim...@gmail.com> wrote: > Is this a primitive (single-threaded) aggregate or async (multi-threaded)? > If async, try to simplify and run primitive aggregate with scaleout=1. > > The CAS does not seem to be null in this case. The caller of the > getSerializedCas() > checks for null. > > The code dies here: > Caused by: java.lang.NullPointerException > at org.apache.uima.cas.impl.CasSerializerSupport$CasDocSerializ > er.getSofaAddr(CasSerializerSupport.java:454) > > public int getSofaAddr(int sofaNum) { > if (sofaNum != 1 || cas.isInitialSofaCreated()) { //skip if initial > view && no Sofa yet > // all > non-initial-views must have a sofa > * return ((CASImpl)cas.getView(sofaNum)).getSofaRef();* > } > return 0; > } > > Looks to me that getView(sofaNum) is returning null. Is it possible that > two threads are operating on the same CAS maybe? One removing a view while > another trying to serialize. Have no idea what else could it be. > > -jerry > > > > On Fri, Feb 10, 2017 at 8:45 AM, nelson rivera <nelsonriver...@gmail.com> > wrote: > >> Hi, The first thing I did was these tests,i made a simple test case >> that create a Cas with 17 views and then serialize using >> XmiCasSerializer.serialize(newJCas.getCas(), fis) and serializes >> correctly. >> Also i made other test, initialize the same AE but of local way with >> UIMA API and process the same input documents and the processing is >> correct and then serialize the CAS, without problem. >> >> The error is with AE deployed in uima-as and consuming it. >> >> 2017-02-09 17:30 GMT-05:00, Marshall Schor <m...@schor.com>: >> > one thing that would help track this down is a small isolated test case. >> > >> > Do you think uima-as is needed? I'm wondering if a simple test case >> which >> > generated 17 views and then tried to serialize would show the failure... >> > >> > If you could supply a small test case that showed the failure so we >> could >> > reproduce it, that would enable a rapid resolution. >> > >> > -Marshall >> > >> > >> > On 2/9/2017 3:58 PM, Marshall Schor wrote: >> >> The line throwing the null pointer exception is : >> >> >> >> cas.getView(sofaNum).getSofaRef() >> >> >> >> So the NPE is either the cas is null, or the getView(sofaNum) is >> returning >> >> null. >> >> >> >> I'm not sure what the best way is to debug this... >> >> >> >> -Marshall >> >> >> >> >> >> >> >> >> >> On 2/9/2017 12:42 PM, nelson rivera wrote: >> >>> I have a aggregate service uima-as, at the end of aggregate the cas to >> >>> return is composed of as many views as the number of input files, each >> >>> view with annotations of processing. >> >>> With a number of input documents less than 15 the processing is >> >>> successful always, >> >>> but if the number of documents is greater than 15, i get a >> >>> NullPointerException at the aggregate service trying to serialize the >> >>> cas, not in the processing of AE aggregate. >> >>> the logs of aggregate service: >> >>> >> >>> 11:51:38.815 - 42: >> >>> cu.datys.xinetica.uima.core.MergerInViewCasMultipler.hasNext(285): >> >>> INFO: HasNext false >> >>> 11:51:38.875 - 44: >> >>> org.apache.uima.uimacpp.UimacppAnalysisComponent.log(396): INFO: : >> >>> XClusterAnalyzer::process --- OK >> >>> 11:51:39.145 - 45: >> >>> org.apache.uima.aae.controller.AggregateAnalysisEngineContro >> ller_impl.replyToClient: >> >>> WARNING: Service: XClusterAnalyzerAggregate Runtime Exception >> >>> 11:51:39.145 - 45: >> >>> org.apache.uima.aae.controller.AggregateAnalysisEngineContro >> ller_impl.replyToClient: >> >>> WARNING: >> >>> org.apache.uima.aae.error.AsynchAEException: >> >>> org.apache.uima.UIMARuntimeException >> >>> at >> >>> org.apache.uima.adapter.jms.activemq.JmsOutputChannel.getSer >> ializedCas(JmsOutputChannel.java:1265) >> >>> at >> >>> org.apache.uima.adapter.jms.activemq.JmsOutputChannel.sendRe >> ply(JmsOutputChannel.java:800) >> >>> at >> >>> org.apache.uima.aae.controller.AggregateAnalysisEngineContro >> ller_impl.sendReplyToRemoteClient(AggregateAnalysisEngineCon >> troller_impl.java:2173) >> >>> at >> >>> org.apache.uima.aae.controller.AggregateAnalysisEngineContro >> ller_impl.replyToClient(AggregateAnalysisEngineController_impl.java:2342) >> >>> at >> >>> org.apache.uima.aae.controller.AggregateAnalysisEngineContro >> ller_impl.finalStep(AggregateAnalysisEngineController_impl.java:1862) >> >>> at >> >>> org.apache.uima.aae.controller.AggregateAnalysisEngineContro >> ller_impl.executeFlowStep(AggregateAnalysisEngineController_ >> impl.java:2489) >> >>> at >> >>> org.apache.uima.aae.controller.AggregateAnalysisEngineContro >> ller_impl.process(AggregateAnalysisEngineController_impl.java:1271) >> >>> at >> >>> org.apache.uima.aae.handler.HandlerBase.invokeProcess(Handle >> rBase.java:118) >> >>> at >> >>> org.apache.uima.aae.handler.input.ProcessResponseHandler.can >> celTimerAndProcess(ProcessResponseHandler.java:117) >> >>> at >> >>> org.apache.uima.aae.handler.input.ProcessResponseHandler.han >> dleProcessResponseWithCASReference(ProcessResponseHandler.java:485) >> >>> at >> >>> org.apache.uima.aae.handler.input.ProcessResponseHandler.han >> dle(ProcessResponseHandler.java:767) >> >>> at >> >>> org.apache.uima.aae.handler.HandlerBase.delegate(HandlerBase >> .java:149) >> >>> at >> >>> org.apache.uima.aae.handler.input.ProcessRequestHandler_impl >> .handle(ProcessRequestHandler_impl.java:1113) >> >>> at >> >>> org.apache.uima.aae.spi.transport.vm.UimaVmMessageListener.o >> nMessage(UimaVmMessageListener.java:107) >> >>> at >> >>> org.apache.uima.aae.spi.transport.vm.UimaVmMessageDispatcher >> $1.run(UimaVmMessageDispatcher.java:70) >> >>> at >> >>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPool >> Executor.java:1145) >> >>> at >> >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoo >> lExecutor.java:615) >> >>> at >> >>> org.apache.uima.aae.UimaAsThreadFactory$1.run(UimaAsThreadFa >> ctory.java:132) >> >>> at java.lang.Thread.run(Thread.java:745) >> >>> Caused by: org.apache.uima.UIMARuntimeException >> >>> at >> >>> org.apache.uima.cas.impl.XmiCasSerializer.serialize(XmiCasSe >> rializer.java:420) >> >>> at >> >>> org.apache.uima.cas.impl.XmiCasSerializer.serialize(XmiCasSe >> rializer.java:385) >> >>> at >> >>> org.apache.uima.aae.UimaSerializer.serializeCasToXmi(UimaSer >> ializer.java:145) >> >>> at >> >>> org.apache.uima.adapter.jms.activemq.JmsOutputChannel.serial >> izeCAS(JmsOutputChannel.java:251) >> >>> at >> >>> org.apache.uima.adapter.jms.activemq.JmsOutputChannel.getSer >> ializedCas(JmsOutputChannel.java:1250) >> >>> ... 18 more >> >>> Caused by: java.lang.NullPointerException >> >>> at >> >>> org.apache.uima.cas.impl.CasSerializerSupport$CasDocSerializ >> er.getSofaAddr(CasSerializerSupport.java:454) >> >>> at >> >>> org.apache.uima.cas.impl.CasSerializerSupport$CasDocSerializ >> er.writeViewsCommons(CasSerializerSupport.java:465) >> >>> at >> >>> org.apache.uima.cas.impl.XmiCasSerializer$XmiDocSerializer. >> writeViews(XmiCasSerializer.java:572) >> >>> at >> >>> org.apache.uima.cas.impl.CasSerializerSupport$CasDocSerializ >> er.serialize(CasSerializerSupport.java:441) >> >>> at >> >>> org.apache.uima.cas.impl.XmiCasSerializer.serialize(XmiCasSe >> rializer.java:415) >> >>> ... 22 more >> >>> >> >> >> > >> > >> > >