[ 
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)

Reply via email to