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



---

Reply via email to