phenoscape / owlery

Owlery is a set of REST web services which allow querying of an OWL reasoner containing a configured set of ontologies.
MIT License
16 stars 11 forks source link

Fatal error on malformed query #34

Closed Robbie1977 closed 4 years ago

Robbie1977 commented 4 years ago

We have had our owlery containers break if the following malformed request is submitted:

/kbs/vfb/subclasses?object=&prefixes=%7B"FBbt"%3A+"http%3A%2F%2Fpurl.obolibrary.org%2Fobo%2FFBbt_"%2C+"RO"%3A+"http%3A%2F%2Fpurl.obolibrary.org%2Fobo%2FRO_"%7D&direct=False

We have healthchecks so the containers are just restarted but probably best to avoid this vulnerability if possible

Error in log:

06/11/2019 12:42:16[ERROR] [11/06/2019 12:42:16.601] [Main-akka.actor.default-dispatcher-911] [akka.actor.ActorSystemImpl(Main)] Error during processing of request: 'java.lang.NullPointerException (No error message supplied)'. Completing with 500 Internal Server Error response. To change default exception handling behavior, provide a custom ExceptionHandler.
06/11/2019 12:42:16java.lang.NullPointerException
06/11/2019 12:42:16 at org.semanticweb.elk.util.collections.ArrayHashMap.get(ArrayHashMap.java:203)
06/11/2019 12:42:16 at org.semanticweb.elk.util.collections.chains.AbstractChain$1.next(AbstractChain.java:105)
06/11/2019 12:42:16 at org.semanticweb.elk.util.collections.chains.AbstractChain$1.next(AbstractChain.java:101)
06/11/2019 12:42:16 at org.semanticweb.elk.util.collections.chains.AbstractChain.find(AbstractChain.java:42)
06/11/2019 12:42:16 at org.semanticweb.elk.reasoner.indexing.hierarchy.IndexedSubClassOfAxiom$ThisCompositionRule.removeFrom(IndexedSubClassOfAxiom.java:162)
06/11/2019 12:42:16 at org.semanticweb.elk.reasoner.indexing.hierarchy.DifferentialIndex.add(DifferentialIndex.java:172)
06/11/2019 12:42:16 at org.semanticweb.elk.reasoner.indexing.hierarchy.IndexedSubClassOfAxiom.updateOccurrenceNumbers(IndexedSubClassOfAxiom.java:85)
06/11/2019 12:42:16 at org.semanticweb.elk.reasoner.indexing.hierarchy.MainAxiomIndexerVisitor$AxiomOccurrenceUpdateFilter.update(MainAxiomIndexerVisitor.java:384)
06/11/2019 12:42:16 at org.semanticweb.elk.reasoner.indexing.hierarchy.MainAxiomIndexerVisitor$AxiomOccurrenceUpdateFilter.visit(MainAxiomIndexerVisitor.java:394)
06/11/2019 12:42:16 at org.semanticweb.elk.reasoner.indexing.hierarchy.MainAxiomIndexerVisitor$AxiomOccurrenceUpdateFilter.visit(MainAxiomIndexerVisitor.java:373)
06/11/2019 12:42:16 at org.semanticweb.elk.reasoner.indexing.hierarchy.MainAxiomIndexerVisitor.indexSubClassOfAxiom(MainAxiomIndexerVisitor.java:148)
06/11/2019 12:42:16 at org.semanticweb.elk.reasoner.indexing.hierarchy.AbstractElkAxiomIndexerVisitor.visit(AbstractElkAxiomIndexerVisitor.java:166)
06/11/2019 12:42:16 at org.semanticweb.elk.reasoner.indexing.hierarchy.AbstractElkAxiomIndexerVisitor.visit(AbstractElkAxiomIndexerVisitor.java:63)
06/11/2019 12:42:16 at org.semanticweb.elk.owl.implementation.ElkEquivalentClassesAxiomImpl.accept(ElkEquivalentClassesAxiomImpl.java:60)
06/11/2019 12:42:16 at org.semanticweb.elk.reasoner.indexing.hierarchy.DelegatingElkAxiomVisitor.visit(DelegatingElkAxiomVisitor.java:103)
06/11/2019 12:42:16 at org.semanticweb.elk.reasoner.indexing.hierarchy.DelegatingElkAxiomVisitor.visit(DelegatingElkAxiomVisitor.java:74)
06/11/2019 12:42:16 at org.semanticweb.elk.owl.implementation.ElkEquivalentClassesAxiomImpl.accept(ElkEquivalentClassesAxiomImpl.java:60)
06/11/2019 12:42:16 at org.semanticweb.elk.reasoner.indexing.hierarchy.ChangeIndexingProcessor.visit(ChangeIndexingProcessor.java:57)
06/11/2019 12:42:16 at org.semanticweb.elk.reasoner.Reasoner$1.load(Reasoner.java:542)
06/11/2019 12:42:16 at org.semanticweb.elk.loading.ComposedAxiomLoader.load(ComposedAxiomLoader.java:52)
06/11/2019 12:42:16 at org.semanticweb.elk.reasoner.stages.AxiomLoadingStage.executeStage(AxiomLoadingStage.java:121)
06/11/2019 12:42:16 at org.semanticweb.elk.reasoner.stages.AbstractReasonerStage.execute(AbstractReasonerStage.java:165)
06/11/2019 12:42:16 at org.semanticweb.elk.reasoner.stages.AxiomLoadingStage.execute(AxiomLoadingStage.java:45)
06/11/2019 12:42:16 at org.semanticweb.elk.reasoner.stages.LoggingStageExecutor.execute(LoggingStageExecutor.java:53)
06/11/2019 12:42:16 at org.semanticweb.elk.reasoner.stages.AbstractStageExecutor.complete(AbstractStageExecutor.java:55)
06/11/2019 12:42:16 at org.semanticweb.elk.reasoner.stages.AbstractReasonerState.complete(AbstractReasonerState.java:145)
06/11/2019 12:42:16 at org.semanticweb.elk.reasoner.stages.AbstractReasonerState.loadAxioms(AbstractReasonerState.java:306)
06/11/2019 12:42:16 at org.semanticweb.elk.reasoner.stages.AbstractReasonerState.isInconsistent(AbstractReasonerState.java:284)
06/11/2019 12:42:16 at org.semanticweb.elk.reasoner.stages.AbstractReasonerState.getTaxonomy(AbstractReasonerState.java:324)
06/11/2019 12:42:16 at org.semanticweb.elk.reasoner.Reasoner.getTaxonomyNode(Reasoner.java:260)
06/11/2019 12:42:16 at org.semanticweb.elk.reasoner.Reasoner.getClassNode(Reasoner.java:331)
06/11/2019 12:42:16 at org.semanticweb.elk.reasoner.Reasoner.getSubClasses(Reasoner.java:393)
06/11/2019 12:42:16 at org.semanticweb.elk.owlapi.ElkReasoner.getSubClasses(ElkReasoner.java:676)
06/11/2019 12:42:16 at org.phenoscape.owlery.Knowledgebase.$anonfun$querySubClasses$1(Knowledgebase.scala:50)
06/11/2019 12:42:16 at scala.concurrent.Future$.$anonfun$apply$1(Future.scala:654)
06/11/2019 12:42:16 at scala.util.Success.$anonfun$map$1(Try.scala:251)
06/11/2019 12:42:16 at scala.util.Success.map(Try.scala:209)
06/11/2019 12:42:16 at scala.concurrent.Future.$anonfun$map$1(Future.scala:288)
06/11/2019 12:42:16 at scala.concurrent.impl.Promise.liftedTree1$1(Promise.scala:29)
06/11/2019 12:42:16 at scala.concurrent.impl.Promise.$anonfun$transform$1(Promise.scala:29)
06/11/2019 12:42:16 at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:60)
06/11/2019 12:42:16 at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
06/11/2019 12:42:16 at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
06/11/2019 12:42:16 at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
06/11/2019 12:42:16 at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
06/11/2019 12:42:16 at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
06/11/2019 12:42:16
06/11/2019 12:53:35[ERROR] [11/06/2019 12:53:35.954] [Main-akka.actor.default-dispatcher-914] [akka.actor.ActorSystemImpl(Main)] Error during processing of request: 'java.lang.NullPointerException (No error message supplied)'. Completing with 500 Internal Server Error response. To change default exception handling behavior, provide a custom ExceptionHandler.
06/11/2019 12:53:35java.lang.NullPointerException
06/11/2019 12:53:35 at org.semanticweb.elk.util.collections.ArrayHashMap.get(ArrayHashMap.java:203)
06/11/2019 12:53:35 at org.semanticweb.elk.util.collections.chains.AbstractChain$1.next(AbstractChain.java:105)
06/11/2019 12:53:35 at org.semanticweb.elk.util.collections.chains.AbstractChain$1.next(AbstractChain.java:101)
06/11/2019 12:53:35 at org.semanticweb.elk.util.collections.chains.AbstractChain.find(AbstractChain.java:42)
06/11/2019 12:53:35 at org.semanticweb.elk.reasoner.indexing.hierarchy.IndexedSubClassOfAxiom$ThisCompositionRule.removeFrom(IndexedSubClassOfAxiom.java:162)
06/11/2019 12:53:35 at org.semanticweb.elk.reasoner.indexing.hierarchy.DifferentialIndex.add(DifferentialIndex.java:172)
06/11/2019 12:53:35 at org.semanticweb.elk.reasoner.indexing.hierarchy.IndexedSubClassOfAxiom.updateOccurrenceNumbers(IndexedSubClassOfAxiom.java:85)
06/11/2019 12:53:35 at org.semanticweb.elk.reasoner.indexing.hierarchy.MainAxiomIndexerVisitor$AxiomOccurrenceUpdateFilter.update(MainAxiomIndexerVisitor.java:384)
06/11/2019 12:53:35 at org.semanticweb.elk.reasoner.indexing.hierarchy.MainAxiomIndexerVisitor$AxiomOccurrenceUpdateFilter.visit(MainAxiomIndexerVisitor.java:394)
06/11/2019 12:53:35 at org.semanticweb.elk.reasoner.indexing.hierarchy.MainAxiomIndexerVisitor$AxiomOccurrenceUpdateFilter.visit(MainAxiomIndexerVisitor.java:373)
06/11/2019 12:53:35 at org.semanticweb.elk.reasoner.indexing.hierarchy.MainAxiomIndexerVisitor.indexSubClassOfAxiom(MainAxiomIndexerVisitor.java:148)
06/11/2019 12:53:35 at org.semanticweb.elk.reasoner.indexing.hierarchy.AbstractElkAxiomIndexerVisitor.visit(AbstractElkAxiomIndexerVisitor.java:166)
06/11/2019 12:53:35 at org.semanticweb.elk.reasoner.indexing.hierarchy.AbstractElkAxiomIndexerVisitor.visit(AbstractElkAxiomIndexerVisitor.java:63)
06/11/2019 12:53:35 at org.semanticweb.elk.owl.implementation.ElkEquivalentClassesAxiomImpl.accept(ElkEquivalentClassesAxiomImpl.java:60)
06/11/2019 12:53:35 at org.semanticweb.elk.reasoner.indexing.hierarchy.DelegatingElkAxiomVisitor.visit(DelegatingElkAxiomVisitor.java:103)
06/11/2019 12:53:35 at org.semanticweb.elk.reasoner.indexing.hierarchy.DelegatingElkAxiomVisitor.visit(DelegatingElkAxiomVisitor.java:74)
06/11/2019 12:53:35 at org.semanticweb.elk.owl.implementation.ElkEquivalentClassesAxiomImpl.accept(ElkEquivalentClassesAxiomImpl.java:60)
06/11/2019 12:53:35 at org.semanticweb.elk.reasoner.indexing.hierarchy.ChangeIndexingProcessor.visit(ChangeIndexingProcessor.java:57)
06/11/2019 12:53:35 at org.semanticweb.elk.reasoner.Reasoner$1.load(Reasoner.java:542)
06/11/2019 12:53:35 at org.semanticweb.elk.loading.ComposedAxiomLoader.load(ComposedAxiomLoader.java:52)
06/11/2019 12:53:35 at org.semanticweb.elk.reasoner.stages.AxiomLoadingStage.executeStage(AxiomLoadingStage.java:121)
06/11/2019 12:53:35 at org.semanticweb.elk.reasoner.stages.AbstractReasonerStage.execute(AbstractReasonerStage.java:165)
06/11/2019 12:53:35 at org.semanticweb.elk.reasoner.stages.AxiomLoadingStage.execute(AxiomLoadingStage.java:45)
06/11/2019 12:53:35 at org.semanticweb.elk.reasoner.stages.LoggingStageExecutor.execute(LoggingStageExecutor.java:53)
06/11/2019 12:53:35 at org.semanticweb.elk.reasoner.stages.AbstractStageExecutor.complete(AbstractStageExecutor.java:55)
06/11/2019 12:53:35 at org.semanticweb.elk.reasoner.stages.AbstractReasonerState.complete(AbstractReasonerState.java:145)
06/11/2019 12:53:35 at org.semanticweb.elk.reasoner.stages.AbstractReasonerState.loadAxioms(AbstractReasonerState.java:306)
06/11/2019 12:53:35 at org.semanticweb.elk.reasoner.stages.AbstractReasonerState.isInconsistent(AbstractReasonerState.java:284)
06/11/2019 12:53:35 at org.semanticweb.elk.reasoner.stages.AbstractReasonerState.getTaxonomy(AbstractReasonerState.java:324)
06/11/2019 12:53:35 at org.semanticweb.elk.reasoner.Reasoner.getTaxonomyNode(Reasoner.java:260)
06/11/2019 12:53:35 at org.semanticweb.elk.reasoner.Reasoner.getQueryTaxonomyNode(Reasoner.java:637)
06/11/2019 12:53:35 at org.semanticweb.elk.reasoner.Reasoner.getClassNode(Reasoner.java:338)
06/11/2019 12:53:35 at org.semanticweb.elk.reasoner.Reasoner.getSubClasses(Reasoner.java:393)
06/11/2019 12:53:35 at org.semanticweb.elk.owlapi.ElkReasoner.getSubClasses(ElkReasoner.java:676)
06/11/2019 12:53:35 at org.phenoscape.owlery.Knowledgebase.$anonfun$querySubClasses$1(Knowledgebase.scala:50)
06/11/2019 12:53:35 at scala.concurrent.Future$.$anonfun$apply$1(Future.scala:654)
06/11/2019 12:53:35 at scala.util.Success.$anonfun$map$1(Try.scala:251)
06/11/2019 12:53:35 at scala.util.Success.map(Try.scala:209)
06/11/2019 12:53:35 at scala.concurrent.Future.$anonfun$map$1(Future.scala:288)
06/11/2019 12:53:35 at scala.concurrent.impl.Promise.liftedTree1$1(Promise.scala:29)
06/11/2019 12:53:35 at scala.concurrent.impl.Promise.$anonfun$transform$1(Promise.scala:29)
06/11/2019 12:53:35 at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:60)
06/11/2019 12:53:35 at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
06/11/2019 12:53:35 at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
06/11/2019 12:53:35 at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
06/11/2019 12:53:35 at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
06/11/2019 12:53:35 at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Robbie1977 commented 4 years ago

FYI our container is here if you want to deploy/test locally: https://hub.docker.com/repository/docker/virtualflybrain/owlery-vfb

balhoff commented 4 years ago

@Robbie1977 sorry for the long delay on this. It should be fixed in the new release: https://github.com/phenoscape/owlery/releases/tag/v0.14

There are several dependency updates there also; please let me know if you see any unexpected changes.