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)

Reply via email to