This is an automated email from the ASF dual-hosted git repository. andy pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/jena.git
commit e87cf2d7a1a54dcf69a2116d64dc0866adf011f0 Author: Andy Seaborne <[email protected]> AuthorDate: Sun Feb 15 16:12:22 2026 +0000 GH-3755: QueryIterPlainWrapper: synchronize access to closeIterator() --- .../org/apache/jena/sparql/engine/iterator/QueryIterPlainWrapper.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterPlainWrapper.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterPlainWrapper.java index 5edd7943cb..ddaec075ea 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterPlainWrapper.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/iterator/QueryIterPlainWrapper.java @@ -64,8 +64,10 @@ public class QueryIterPlainWrapper extends QueryIter @Override protected Binding moveToNextBinding() { return iterator.next(); } + // Synchronized to prevent race conditions when abort() and close() compete + // to close the iterator concurrent by calling closeIterator() @Override - protected void closeIterator() { + protected synchronized void closeIterator() { if ( iterator != null ) { // In case we wrapped a QueryIterator or a Jena graph ExtendedIterator. // Includes the effect of NiceIterator.close(iterator)
