[ 
https://issues.apache.org/jira/browse/JENA-120?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13109558#comment-13109558
 ] 

Stephen Allen commented on JENA-120:
------------------------------------

I too expected testReuseQueryObject2 to fail when I wrote it.  However, the 
reason it doesn't is a little tricky.  The Aggregator objects (via 
AggregatorBase) lazily create an Accumulator for each BindingKey.  When you run 
the query multiple times, for some reason the BindingKeys it creates for the 
same group are not considered equivalent, and thus get added twice to the 
buckets object in AggregatorBase.

I don't know if this means that the .equals() and/or .hashCode() are incorrect 
on BindingKey, or something else.  Also I'm not quite sure how to modify 
testReuseQueryObject2 to actually test for the fact that there are extra 
Accumulator objects inside the Aggregator, with out digging into the innards of 
the object.



> Query objects with aggregators cannot be reused
> -----------------------------------------------
>
>                 Key: JENA-120
>                 URL: https://issues.apache.org/jira/browse/JENA-120
>             Project: Jena
>          Issue Type: Bug
>          Components: ARQ
>            Reporter: Stephen Allen
>            Assignee: Andy Seaborne
>            Priority: Minor
>         Attachments: JENA-120-r1173178.patch
>
>
> Query objects that contain aggregators (Group By) cannot be reused by 
> different threads because the internal state is mutable.  Even reusing a 
> query object in the same thread has problems, because it creates a new 
> Aggregator object each time you execute the query.  Users may want to reuse 
> Query objects to save having to reparse the query string.
> I believe the solution is to copy the aggregators when compiling the query.  
> I've attached a patch that does that in the 
> AlgebraGenerator.compileModifiers() method.
> See the thread at [1] for more discussion.
> [1] 
> http://mail-archives.apache.org/mod_mbox/incubator-jena-users/201109.mbox/%3cb60aca3a-db31-4fec-a72e-d81a5c2ab...@knublauch.com%3E

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

        

Reply via email to