[ https://issues.apache.org/jira/browse/JENA-1529?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Osma Suominen updated JENA-1529: -------------------------------- Component/s: TDB2 > tdb2.tdbquery prints heavy stack trace whilst querying a TDB2 store > ------------------------------------------------------------------- > > Key: JENA-1529 > URL: https://issues.apache.org/jira/browse/JENA-1529 > Project: Apache Jena > Issue Type: Bug > Components: TDB2 > Affects Versions: Jena 3.7.0 > Environment: $ java -version > openjdk version "9-internal" > OpenJDK Runtime Environment (build 9-internal+0-2016-04-14-195246.buildd.src) > OpenJDK 64-Bit Server VM (build 9-internal+0-2016-04-14-195246.buildd.src, > mixed mode) > Ubuntu 16.04.04 LTS > Reporter: Alex Kourijoki > Priority: Major > > After upgrading Fuseki to 3.7.0 and switching from TDB1 to TDB2 I noticed > that Fuseki was busy generating colossal log files. Digging a bit deeper, I > found the root cause to be that this query > {code:java} > PREFIX skos: <http://www.w3.org/2004/02/skos/core#> > SELECT ?conc ?label ?lang > WHERE { > ?conc a skos:Concept . > ?conc skos:prefLabel ?label . > #BIND ("anything" as ?anything) # interestingly, uncommenting this line > prevents stack trace from appearing in tdb2 > VALUES (?lang) { ('en') ('de') } > FILTER (langMatches(lang(?label), ?lang)) > } > LIMIT 3 > {code} > against this example .ttl file > {code:java} > @base <http://example.org/> . > @prefix skos: <http://www.w3.org/2004/02/skos/core#> . > <#example1> a skos:Concept ; > skos:prefLabel "test1 with 'en' langcode"@en, > "test1 with 'de' langcode"@de, > "test1 with no langcode" . > <#example2> a skos:Concept ; > skos:prefLabel "test2 with 'en' langcode"@en, > "test2 with 'de' langcode"@de, > "test2 with no langcode" . > {code} > generates the following kind of stack traces: > {code:java} > ERROR BindingTDB :: get1(?lang) > org.apache.jena.tdb2.TDBException: No node in NodeTable for NodeId > [DoesNotExist] > at org.apache.jena.tdb2.solver.BindingTDB.get1(BindingTDB.java:127) > at > org.apache.jena.sparql.engine.binding.BindingBase.get(BindingBase.java:104) > at org.apache.jena.sparql.expr.ExprVar.eval(ExprVar.java:60) > at org.apache.jena.sparql.expr.ExprVar.eval(ExprVar.java:53) > at org.apache.jena.sparql.expr.ExprNode.eval(ExprNode.java:93) > at org.apache.jena.sparql.expr.ExprFunction2.eval(ExprFunction2.java:77) > at org.apache.jena.sparql.expr.ExprNode.isSatisfied(ExprNode.java:41) > at > org.apache.jena.sparql.engine.iterator.QueryIterFilterExpr.accept(QueryIterFilterExpr.java:49) > at > org.apache.jena.sparql.engine.iterator.QueryIterProcessBinding.hasNextBinding(QueryIterProcessBinding.java:69) > at > org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:114) > at > org.apache.jena.sparql.engine.iterator.QueryIterConvert.hasNextBinding(QueryIterConvert.java:58) > at > org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:114) > at > org.apache.jena.sparql.engine.iterator.QueryIterSlice.hasNextBinding(QueryIterSlice.java:76) > at > org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:114) > at > org.apache.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:39) > at > org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:114) > at > org.apache.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:39) > at > org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:114) > at > org.apache.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:39) > at > org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:114) > at > org.apache.jena.sparql.engine.ResultSetStream.hasNext(ResultSetStream.java:74) > at > org.apache.jena.sparql.engine.ResultSetCheckCondition.hasNext(ResultSetCheckCondition.java:55) > at > org.apache.jena.sparql.resultset.ResultSetMem.<init>(ResultSetMem.java:90) > at > org.apache.jena.query.ResultSetFactory.makeRewindable(ResultSetFactory.java:357) > at org.apache.jena.sparql.resultset.TextOutput.write(TextOutput.java:145) > at org.apache.jena.sparql.resultset.TextOutput.write(TextOutput.java:130) > at org.apache.jena.sparql.resultset.TextOutput.write(TextOutput.java:118) > at org.apache.jena.sparql.resultset.TextOutput.format(TextOutput.java:66) > at > org.apache.jena.query.ResultSetFormatter.out(ResultSetFormatter.java:165) > at > org.apache.jena.sparql.util.QueryExecUtils.outputResultSet(QueryExecUtils.java:157) > at > org.apache.jena.sparql.util.QueryExecUtils.doSelectQuery(QueryExecUtils.java:191) > at > org.apache.jena.sparql.util.QueryExecUtils.executeQuery(QueryExecUtils.java:78) > at arq.query.lambda$queryExec$0(query.java:224) > at org.apache.jena.system.Txn.exec(Txn.java:81) > at org.apache.jena.system.Txn.executeRead(Txn.java:123) > at arq.query.queryExec(query.java:221) > at arq.query.exec(query.java:153) > at jena.cmd.CmdMain.mainMethod(CmdMain.java:93) > at jena.cmd.CmdMain.mainRun(CmdMain.java:58) > at jena.cmd.CmdMain.mainRun(CmdMain.java:45) > at tdb2.tdbquery.main(tdbquery.java:30) > {code} > Finally, a correct answer is provided: > {code:java} > ------------------------------------------------------------------------- > | conc | label | lang | > ========================================================================= > | <http://example.org/#example1> | "test1 with 'en' langcode"@en | "en" | > | <http://example.org/#example2> | "test2 with 'en' langcode"@en | "en" | > | <http://example.org/#example1> | "test1 with 'de' langcode"@de | "de" | > ------------------------------------------------------------------------- > {code} > This seemed not to happen with apache-jena-3.7.0/bin/tdbquery against a TDB1 > store with the same query. Interestingly, having a bind of any kind in the > query seemed to resolve the issue for tdb2.tdbquery. > -- This message was sent by Atlassian JIRA (v7.6.3#76005)