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())`.
---