You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jena.apache.org by "Andy Seaborne (JIRA)" <ji...@apache.org> on 2019/07/07 15:52:00 UTC

[jira] [Resolved] (JENA-1719) Fuseki with TDB2 using RDFS inference throws exception on queries

     [ https://issues.apache.org/jira/browse/JENA-1719?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Andy Seaborne resolved JENA-1719.
---------------------------------
       Resolution: Fixed
    Fix Version/s: Jena 3.13.0

> Fuseki with TDB2 using RDFS inference throws exception on queries
> -----------------------------------------------------------------
>
>                 Key: JENA-1719
>                 URL: https://issues.apache.org/jira/browse/JENA-1719
>             Project: Apache Jena
>          Issue Type: Bug
>    Affects Versions: Jena 3.10.0, Jena 3.11.0
>            Reporter: Mike Welch
>            Assignee: Dave Reynolds
>            Priority: Major
>             Fix For: Jena 3.13.0
>
>         Attachments: data.nt, example.owl, example.ttl
>
>          Time Spent: 50m
>  Remaining Estimate: 0h
>
> Configuring an InfModel with an RDFS reasoner and a TDB2 dataset throws the following exception when issuing a query:
>  
> {noformat}
> org.apache.jena.dboe.transaction.txn.TransactionException: Iterator used inside a different transaction
>  at org.apache.jena.tdb2.store.IteratorTxnTracker.check(IteratorTxnTracker.java:53)
>  at org.apache.jena.tdb2.store.IteratorTxnTracker.hasNext(IteratorTxnTracker.java:41)
>  at org.apache.jena.atlas.iterator.Iter$2.hasNext(Iter.java:265)
>  at org.apache.jena.atlas.iterator.Iter.hasNext(Iter.java:903)
>  at org.apache.jena.util.iterator.WrappedIterator.hasNext(WrappedIterator.java:90)
>  at org.apache.jena.util.iterator.NiceIterator$1.hasNext(NiceIterator.java:105)
>  at org.apache.jena.util.iterator.NiceIterator$1.hasNext(NiceIterator.java:105)
>  at org.apache.jena.reasoner.rulesys.impl.TopLevelTripleMatchFrame.nextMatch(TopLevelTripleMatchFrame.java:55)
>  at org.apache.jena.reasoner.rulesys.impl.LPInterpreter.run(LPInterpreter.java:328)
>  at org.apache.jena.reasoner.rulesys.impl.LPInterpreter.next(LPInterpreter.java:190)
>  at org.apache.jena.reasoner.rulesys.impl.Generator.pump(Generator.java:252)
>  at org.apache.jena.reasoner.rulesys.impl.Generator.pump(Generator.java:239)
>  at org.apache.jena.reasoner.rulesys.impl.LPBRuleEngine.pump(LPBRuleEngine.java:359)
>  at org.apache.jena.reasoner.rulesys.impl.LPTopGoalIterator.moveForward(LPTopGoalIterator.java:107)
>  at org.apache.jena.reasoner.rulesys.impl.LPTopGoalIterator.hasNext(LPTopGoalIterator.java:223)
>  at org.apache.jena.util.iterator.WrappedIterator.hasNext(WrappedIterator.java:90)
>  at org.apache.jena.util.iterator.WrappedIterator.hasNext(WrappedIterator.java:90)
>  at org.apache.jena.util.iterator.FilterIterator.hasNext(FilterIterator.java:55)
>  at org.apache.jena.util.iterator.WrappedIterator.hasNext(WrappedIterator.java:90)
>  at org.apache.jena.util.iterator.FilterIterator.hasNext(FilterIterator.java:55)
>  at org.apache.jena.sparql.engine.iterator.QueryIterTriplePattern$TripleMapper.hasNextBinding(QueryIterTriplePattern.java:135)
>  at org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:114)
>  at org.apache.jena.sparql.engine.iterator.QueryIterRepeatApply.hasNextBinding(QueryIterRepeatApply.java:74)
>  at org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:114)
>  at org.apache.jena.sparql.engine.iterator.QueryIterBlockTriples.hasNextBinding(QueryIterBlockTriples.java:63)
>  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.ResultSetStream.hasNext(ResultSetStream.java:74)
>  at org.apache.jena.sparql.engine.ResultSetCheckCondition.hasNext(ResultSetCheckCondition.java:55)
>  at org.apache.jena.sparql.resultset.ResultSetApply.apply(ResultSetApply.java:38)
>  at org.apache.jena.riot.resultset.rw.ResultSetWriterJSON.write(ResultSetWriterJSON.java:82)
>  at org.apache.jena.riot.resultset.rw.ResultsWriter.write(ResultsWriter.java:127)
>  at org.apache.jena.riot.resultset.rw.ResultsWriter.write(ResultsWriter.java:97)
>  at org.apache.jena.fuseki.servlets.ResponseResultSet.lambda$generalOutput$1(ResponseResultSet.java:209)
>  at org.apache.jena.fuseki.servlets.ResponseResultSet.output(ResponseResultSet.java:225)
>  at org.apache.jena.fuseki.servlets.ResponseResultSet.generalOutput(ResponseResultSet.java:215)
>  at org.apache.jena.fuseki.servlets.ResponseResultSet.doResponseResultSet$(ResponseResultSet.java:176)
>  at org.apache.jena.fuseki.servlets.ResponseResultSet.doResponseResultSet(ResponseResultSet.java:85)
>  at org.apache.jena.fuseki.servlets.SPARQL_Query.sendResults(SPARQL_Query.java:404)
>  at org.apache.jena.fuseki.servlets.SPARQL_Query.execute(SPARQL_Query.java:286)
>  at org.apache.jena.fuseki.servlets.SPARQL_Query.executeWithParameter(SPARQL_Query.java:238)
>  at org.apache.jena.fuseki.servlets.SPARQL_Query.perform(SPARQL_Query.java:213)
>  at org.apache.jena.fuseki.servlets.ActionService.executeLifecycle(ActionService.java:243)
>  at org.apache.jena.fuseki.servlets.ActionService.execCommonWorker(ActionService.java:134)
>  at org.apache.jena.fuseki.servlets.ActionBase.doCommon(ActionBase.java:74)
>  at org.apache.jena.fuseki.servlets.FusekiFilter.doFilter(FusekiFilter.java:73)
>  at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
>  at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)
>  at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
>  at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
>  at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
>  at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
>  at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
>  at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
>  at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
>  at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
>  at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
>  at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
>  at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
>  at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
>  at org.apache.jena.fuseki.servlets.CrossOriginFilter.handle(CrossOriginFilter.java:285)
>  at org.apache.jena.fuseki.servlets.CrossOriginFilter.doFilter(CrossOriginFilter.java:248)
>  at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1634)
>  at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)
>  at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
>  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:257)
>  at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
>  at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
>  at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1340)
>  at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
>  at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
>  at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
>  at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
>  at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1242)
>  at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
>  at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:740)
>  at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
>  at org.eclipse.jetty.server.Server.handle(Server.java:503)
>  at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)
>  at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
>  at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
>  at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
>  at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
>  at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
>  at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
>  at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
>  at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:132)
>  at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
>  at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
>  at java.lang.Thread.run(Thread.java:748){noformat}
>  
> Steps to reproduce (see attachments for files)
>  
> 1. Generate a tdb2 database from the toy data
> {code:java}
> $tdb2.tdbloader --loc=graph data.nt{code}
> 2. Start fuseki-server with the attached config (adjust path to ontology file in the config accordingly)
> {code:java}
> $fuseki-server --config=example.ttl{code}
> 3. Issue a small query
> {code:java}
> $s-query --server=http://localhost:3030/example "select * where {?s a <http://example.com/ns/Person>} limit 10"{code}
> 4. Issue another query
> {code:java}
> $s-query --server=http://localhost:3030/example "select * where {?s a <http://example.com/ns/Person>} limit 1000"{code}
> At this point, I consistently get this response:
> {code:java}
> Error 500: Iterator used inside a different transaction
> 500: http://localhost:3030/example?query=select+%2A+where+%7B%3Fs+a+%3Chttp%3A%2F%2Fexample.com%2Fns%2FPerson%3E%7D+limit+1000{code}
> And on the server log see the above stack trace.  I have encountered this in both the 3.11 and 3.10 releases.  I have not tried on earlier versions.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)