[
https://issues.apache.org/jira/browse/JENA-1486?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16361038#comment-16361038
]
ASF GitHub Bot commented on JENA-1486:
--------------------------------------
Github user afs commented on a diff in the pull request:
https://github.com/apache/jena/pull/360#discussion_r167613683
--- Diff: jena-text/src/main/java/jena/textindexer.java ---
@@ -104,39 +105,57 @@ protected String getSummary() {
@Override
protected void exec() {
- Set<Node> properties = getIndexedProperties() ;
-
- // there are various strategies possible here
- // what is implemented is a first cut simple approach
- // currently - for each indexed property
- // list and index triples with that property
- // that way only process triples that will be indexed
- // but each entity may be updated several times
-
- for ( Node property : properties )
- {
- Iterator<Quad> quadIter = dataset.find( Node.ANY, Node.ANY,
property, Node.ANY );
- for (; quadIter.hasNext(); )
+ try {
+ // JENA-1486 Make sure to use transactions if supported
+ // The supportsTransactions() check should be strictly
unecessary as we should always be using a
+ // DatasetGraphText which is transactional but just for future
proofing we check anyway
+ if (dataset.supportsTransactions()) {
--- End diff --
Comment, rather than change request :
https://github.com/apache/jena/blob/master/jena-cmds/src/main/java/arq/query.java#L220
```
Transactional transactional = (dataset != null &&
dataset.supportsTransactions())
? dataset
: new TransactionalNull() ;
Txn.executeRead(transactional, ()->{
....
});
```
is an idiom that can be useful to (1) ensure the transaction is finished,
and (2) avoid repeated `if (dataset.supportsTransactions())`.
> textindexer CLI tool does not use a read transaction preventing usage with
> TDB2 datasets
> ----------------------------------------------------------------------------------------
>
> Key: JENA-1486
> URL: https://issues.apache.org/jira/browse/JENA-1486
> Project: Apache Jena
> Issue Type: Bug
> Components: TDB2, Text
> Affects Versions: Jena 3.6.0
> Reporter: Rob Vesse
> Assignee: Rob Vesse
> Priority: Major
>
> Reported via mailing list:
> https://lists.apache.org/thread.html/01e5c0993e616cc33e82ca8351ca8a24ad857fa5ebc9567392e7786a@%3Cusers.jena.apache.org%3E
> Stack trace like so:
> {quote}$ java -cp $FUSEKI_HOME/fuseki-server.jar jena.textindexer
> --desc=sepadcat.ttl
> org.apache.jena.dboe.transaction.txn.TransactionException: Not in a
> transaction at
> org.apache.jena.dboe.transaction.txn.TransactionalComponentLifecycle.checkTxn(TransactionalComponentLifecycle.java:417)
> at
> org.apache.jena.dboe.trans.bplustree.BPlusTree.getRootRead(BPlusTree.java:159)
> at org.apache.jena.dboe.trans.bplustree.BPlusTree.find(BPlusTree.java:239)
> at
> org.apache.jena.tdb2.store.nodetable.NodeTableNative.accessIndex(NodeTableNative.java:133)
> at
> org.apache.jena.tdb2.store.nodetable.NodeTableNative._idForNode(NodeTableNative.java:118)
> at
> org.apache.jena.tdb2.store.nodetable.NodeTableNative.getNodeIdForNode(NodeTableNative.java:57)
> at
> org.apache.jena.tdb2.store.nodetable.NodeTableCache._idForNode(NodeTableCache.java:222)
> at
> org.apache.jena.tdb2.store.nodetable.NodeTableCache.getNodeIdForNode(NodeTableCache.java:114)
> at
> org.apache.jena.tdb2.store.nodetable.NodeTableWrapper.getNodeIdForNode(NodeTableWrapper.java:47)
> at
> org.apache.jena.tdb2.store.nodetable.NodeTableInline.getNodeIdForNode(NodeTableInline.java:58)
> at
> org.apache.jena.tdb2.store.nodetupletable.NodeTupleTableConcrete.idForNode(NodeTupleTableConcrete.java:182)
> at
> org.apache.jena.tdb2.store.nodetupletable.NodeTupleTableConcrete.findAsNodeIds(NodeTupleTableConcrete.java:136)
> at org.apache.jena.tdb2.store.TripleTable.find(TripleTable.java:64) at
> org.apache.jena.tdb2.store.DatasetGraphTDB.findInDftGraph(DatasetGraphTDB.java:109)
> at
> org.apache.jena.sparql.core.DatasetGraphBaseFind.findAny(DatasetGraphBaseFind.java:72)
> at
> org.apache.jena.sparql.core.DatasetGraphBaseFind.find(DatasetGraphBaseFind.java:50)
> at
> org.apache.jena.sparql.core.DatasetGraphWrapper.find(DatasetGraphWrapper.java:151)
> at
> org.apache.jena.sparql.core.DatasetGraphWrapper.find(DatasetGraphWrapper.java:151)
> at jena.textindexer.exec(textindexer.java:118) 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
> jena.textindexer.main(textindexer.java:51){quote}
> It looks like the {{textindexer}} code doesn't attempt to use a read
> transaction so it should be changed to do so.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)