Re: Transaction error with Fuseki REST API + TDB2

2018-10-09 Thread Rob Vesse
Reformatted config to make it readable.  Hopefully someone more familiar with 
the inference machinery will know where to start looking

Rob

On 09/10/2018, 15:07, "Brad Stallion"  wrote:

 Hi Rob,thanks a lot for your reply. I'm using fuseki-3.9.0 and this is my 
config file:

@prefix :   .
@prefix rdf:    .
@prefix tdb2:   .
@prefix ja: .
@prefix rdfs:   .
@prefix fuseki:  .
 :service_tdb_all  a   fuseki:Service ;
 rdfs:label"TDB2 db" ;
 fuseki:dataset:tdb_dataset_readwrite ;
 fuseki:name   "pippo" ;
 fuseki:serviceQuery   "query" , "sparql" ;
 fuseki:serviceReadGraphStore  "get" ;   
 fuseki:serviceReadWriteGraphStore "data" ;
 fuseki:serviceUpdate  "update" ;
 fuseki:serviceUpload  "upload" .

:tdb_dataset_readwrite a ja:RDFDataset; 
 ja:defaultGraph :modelInf; .
:modelInf a ja:InfModel; 
 ja:reasoner  [ ja:reasonerURL  
] ; 
 ja:baseModel :gra ; . 

:gra a tdb2:GraphTDB;   
   tdb2:location  "PIPPO"; 
   tdb2:unionDefaultGraph true ;  .

Unfortunately I can't provide the data in the KB.I'm trying to reproduce 
the problem with other neutral data.Meanwhile, please let me know if you have 
any idea.Thanks a lotBye
Il martedì 9 ottobre 2018, 11:46:06 CEST, Rob Vesse 
 ha scritto:  
 
 Brad

The stack trace looks like you have configured a dataset with some 
inference.  It is possible that the inference layer is not using transactions 
on the underlying dataset properly, and/or caching some data that is tied to a 
specific transaction.

For further help we would likely need to see Fuseki config files, Jena 
versions and ideally sample queries and data that reproduce this

Rob

On 09/10/2018, 10:36, "Brad Stallion"  
wrote:

Hi All,I have a TDB2 KB exposed by Fuseki REST api.Such APIs are 
invoked by Python code. Each invocation is performed by an urllib2 get/post 
urlopen.Queries and updates works, but sometime I get this error from Fuseki:
"urllib2.HTTPError: HTTP Error 500: Iterator used inside a different 
transaction"
Here's the full stacktrace from the logs:
[2018-10-09 10:46:21] FusekiWARN  [51] RC = 500 : Iterator used 
inside a different 
transactionorg.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:886) 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 

Re: Transaction error with Fuseki REST API + TDB2

2018-10-09 Thread Brad Stallion
 Hi Rob,thanks a lot for your reply. I'm using fuseki-3.9.0 and this is my 
config file:
@prefix :       .@prefix rdf:   
 .@prefix tdb2:  
 .@prefix ja:    
 .@prefix rdfs:  
 .@prefix fuseki: 
 .
:service_tdb_all  a                   fuseki:Service ;        rdfs:label        
            "TDB2 db" ;        fuseki:dataset                
:tdb_dataset_readwrite ;        fuseki:name                   "pippo" ;        
fuseki:serviceQuery           "query" , "sparql" ;        
fuseki:serviceReadGraphStore  "get" ;        fuseki:serviceReadWriteGraphStore 
"data" ;        fuseki:serviceUpdate          "update" ;        
fuseki:serviceUpload          "upload" .
:tdb_dataset_readwrite a ja:RDFDataset; ja:defaultGraph :modelInf; .
:modelInf a ja:InfModel; ja:reasoner  [ ja:reasonerURL  
] ; ja:baseModel :gra ; . 
:gra a tdb2:GraphTDB;        tdb2:location  "PIPPO"; tdb2:unionDefaultGraph 
true ;  .

Unfortunately I can't provide the data in the KB.I'm trying to reproduce the 
problem with other neutral data.Meanwhile, please let me know if you have any 
idea.Thanks a lotBye
Il martedì 9 ottobre 2018, 11:46:06 CEST, Rob Vesse  
ha scritto:  
 
 Brad

The stack trace looks like you have configured a dataset with some inference.  
It is possible that the inference layer is not using transactions on the 
underlying dataset properly, and/or caching some data that is tied to a 
specific transaction.

For further help we would likely need to see Fuseki config files, Jena versions 
and ideally sample queries and data that reproduce this

Rob

On 09/10/2018, 10:36, "Brad Stallion"  wrote:

    Hi All,I have a TDB2 KB exposed by Fuseki REST api.Such APIs are invoked by 
Python code. Each invocation is performed by an urllib2 get/post 
urlopen.Queries and updates works, but sometime I get this error from Fuseki:
    "urllib2.HTTPError: HTTP Error 500: Iterator used inside a different 
transaction"
    Here's the full stacktrace from the logs:
    [2018-10-09 10:46:21] Fuseki    WARN  [51] RC = 500 : Iterator used inside 
a different 
transactionorg.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:886) 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.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:39)
 at 
org.apache.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:114)
 at 

Re: Transaction error with Fuseki REST API + TDB2

2018-10-09 Thread Rob Vesse
Brad

The stack trace looks like you have configured a dataset with some inference.  
It is possible that the inference layer is not using transactions on the 
underlying dataset properly, and/or caching some data that is tied to a 
specific transaction.

For further help we would likely need to see Fuseki config files, Jena versions 
and ideally sample queries and data that reproduce this

Rob

On 09/10/2018, 10:36, "Brad Stallion"  wrote:

Hi All,I have a TDB2 KB exposed by Fuseki REST api.Such APIs are invoked by 
Python code. Each invocation is performed by an urllib2 get/post 
urlopen.Queries and updates works, but sometime I get this error from Fuseki:
"urllib2.HTTPError: HTTP Error 500: Iterator used inside a different 
transaction"
Here's the full stacktrace from the logs:
[2018-10-09 10:46:21] Fuseki WARN  [51] RC = 500 : Iterator used inside 
a different 
transactionorg.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:886) 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.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:435) 
at org.apache.jena.fuseki.servlets.SPARQL_Query.execute(SPARQL_Query.java:290) 
at 

Transaction error with Fuseki REST API + TDB2

2018-10-09 Thread Brad Stallion
Hi All,I have a TDB2 KB exposed by Fuseki REST api.Such APIs are invoked by 
Python code. Each invocation is performed by an urllib2 get/post 
urlopen.Queries and updates works, but sometime I get this error from Fuseki:
"urllib2.HTTPError: HTTP Error 500: Iterator used inside a different 
transaction"
Here's the full stacktrace from the logs:
[2018-10-09 10:46:21] Fuseki     WARN  [51] RC = 500 : Iterator used inside a 
different transactionorg.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:886) 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.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:435) 
at org.apache.jena.fuseki.servlets.SPARQL_Query.execute(SPARQL_Query.java:290) 
at 
org.apache.jena.fuseki.servlets.SPARQL_Query.executeWithParameter(SPARQL_Query.java:242)
 at org.apache.jena.fuseki.servlets.SPARQL_Query.perform(SPARQL_Query.java:227) 
at 
org.apache.jena.fuseki.servlets.ActionService.executeLifecycle(ActionService.java:183)
 at 
org.apache.jena.fuseki.servlets.ActionService.execCommonWorker(ActionService.java:98)
 at org.apache.jena.fuseki.servlets.ActionBase.doCommon(ActionBase.java:74) at 
org.apache.jena.fuseki.servlets.FusekiFilter.doFilter(FusekiFilter.java:73) at