Return-Path: X-Original-To: apmail-incubator-jena-dev-archive@minotaur.apache.org Delivered-To: apmail-incubator-jena-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id D28B790BE for ; Wed, 21 Sep 2011 15:07:30 +0000 (UTC) Received: (qmail 43876 invoked by uid 500); 21 Sep 2011 15:07:30 -0000 Delivered-To: apmail-incubator-jena-dev-archive@incubator.apache.org Received: (qmail 43830 invoked by uid 500); 21 Sep 2011 15:07:30 -0000 Mailing-List: contact jena-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: jena-dev@incubator.apache.org Delivered-To: mailing list jena-dev@incubator.apache.org Received: (qmail 43821 invoked by uid 99); 21 Sep 2011 15:07:30 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 21 Sep 2011 15:07:30 +0000 X-ASF-Spam-Status: No, hits=-2000.5 required=5.0 tests=ALL_TRUSTED,RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.116] (HELO hel.zones.apache.org) (140.211.11.116) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 21 Sep 2011 15:07:29 +0000 Received: from hel.zones.apache.org (hel.zones.apache.org [140.211.11.116]) by hel.zones.apache.org (Postfix) with ESMTP id 40FEEA61BE for ; Wed, 21 Sep 2011 15:07:09 +0000 (UTC) Date: Wed, 21 Sep 2011 15:07:09 +0000 (UTC) From: "Stephen Allen (JIRA)" To: jena-dev@incubator.apache.org Message-ID: <945938033.50921.1316617629262.JavaMail.tomcat@hel.zones.apache.org> In-Reply-To: <922552960.46560.1316534048930.JavaMail.tomcat@hel.zones.apache.org> Subject: [jira] [Commented] (JENA-120) Query objects with aggregators cannot be reused MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ 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-D81A5C2AB41A@knublauch.com%3E -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira