grobid-quantities icon indicating copy to clipboard operation
grobid-quantities copied to clipboard

Pool stop processing after an error

Open Aazhar opened this issue 6 years ago • 3 comments

The rest pool service gets blocked after this error appears (it's related to the clearNLP part for extracting the substance) :

Mar 07, 2018 10:30:25 AM org.grobid.core.engines.DefaultSubstanceParser parseSubstance SEVERE: error in substance parser: java.lang.NullPointerException at com.googlecode.clearnlp.dependency.srl.SRLabeler.getNode(SRLabeler.java:724) at com.googlecode.clearnlp.dependency.srl.SRLabeler.getField(SRLabeler.java:481) at com.googlecode.clearnlp.engine.AbstractEngine.addFeatures(AbstractEngine.java:90) at com.googlecode.clearnlp.engine.AbstractEngine.getFeatureVector(AbstractEngine.java:58) at com.googlecode.clearnlp.dependency.srl.SRLabeler.getLabel(SRLabeler.java:405) at com.googlecode.clearnlp.dependency.srl.SRLabeler.labelDown(SRLabeler.java:390) at com.googlecode.clearnlp.dependency.srl.SRLabeler.labelDown(SRLabeler.java:393) at com.googlecode.clearnlp.dependency.srl.SRLabeler.labelAux(SRLabeler.java:375) at com.googlecode.clearnlp.dependency.srl.SRLabeler.labelAux(SRLabeler.java:355) at com.googlecode.clearnlp.dependency.srl.SRLabeler.label(SRLabeler.java:330) at com.googlecode.clearnlp.engine.EngineProcess.predictSRL(EngineProcess.java:177) at org.grobid.core.utilities.TextParser.parseText(TextParser.java:215) at org.grobid.core.engines.DefaultSubstanceParser.parseSubstance(DefaultSubstanceParser.java:27) at org.grobid.core.engines.QuantityParser.processLayoutTokenSequence(QuantityParser.java:312) at org.grobid.core.engines.QuantityParser.extractQuantitiesPDF(QuantityParser.java:233) at org.grobid.service.QuantityProcessFile.processPDFAnnotation(QuantityProcessFile.java:74) at org.grobid.service.QuantityRestService.processPDFAnnotation(QuantityRestService.java:79) at sun.reflect.GeneratedMethodAccessor39.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205) at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339) at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:833) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1634) at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:206) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1621) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:541) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:190) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1253) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:481) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1155) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:219) at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) at org.eclipse.jetty.server.Server.handle(Server.java:564) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:317) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110) at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124) at org.eclipse.jetty.util.thread.Invocable.invokePreferred(Invocable.java:128) at org.eclipse.jetty.util.thread.Invocable$InvocableExecutor.invoke(Invocable.java:222) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:294) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:199) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:672) at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:590) at java.lang.Thread.run(Thread.java:748)

Aazhar avatar Mar 07 '18 10:03 Aazhar

This will be fixed when the substance parser (or, better called quantified object parser) will be rewritten with CRF / CRF-LSTM #19

lfoppiano avatar Nov 21 '18 16:11 lfoppiano

In the meantime. I've added a parameter in the QuantityParser that allow the possibility to disable the substance recognition.

lfoppiano avatar Mar 19 '19 01:03 lfoppiano

I think I've fixed the issue by adding some synchronized when the parser is invoked, in 61d799e.

lfoppiano avatar Apr 10 '19 06:04 lfoppiano