QueryIteratorBase concurrency issues
------------------------------------

                 Key: JENA-100
                 URL: https://issues.apache.org/jira/browse/JENA-100
             Project: Jena
          Issue Type: Bug
          Components: ARQ
            Reporter: Stephen Allen
         Attachments: JENA-100-r1157891.patch

QueryIteratorBase appears to have some concurrency bugs relating to cancelling 
a query:

1) The cancel() and cancelAllowContinue() methods did not have large enough 
synchronized blocks (they also used "this" as the lock, which is not 
recommended)
2) The order of setting the cancellation flags and the notifying subclasses via 
the requestCancel() method was incorrect
3) The visibility and happens-before relationships were incorrect for the 
requestingCancel and abortIterator variables

The cancelAllowContinue() feature adds a lot of complexity in terms of 
visibility and ordering.  Unfortunately it is hard to write test cases for 
these types of concurrency issues, so the existing tests did not uncover the 
issues.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to