Return-Path: X-Original-To: apmail-clerezza-dev-archive@www.apache.org Delivered-To: apmail-clerezza-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 15320E6A0 for ; Wed, 13 Mar 2013 17:04:33 +0000 (UTC) Received: (qmail 84826 invoked by uid 500); 13 Mar 2013 17:04:33 -0000 Delivered-To: apmail-clerezza-dev-archive@clerezza.apache.org Received: (qmail 84773 invoked by uid 500); 13 Mar 2013 17:04:32 -0000 Mailing-List: contact dev-help@clerezza.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@clerezza.apache.org Delivered-To: mailing list dev@clerezza.apache.org Received: (qmail 84764 invoked by uid 99); 13 Mar 2013 17:04:32 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 13 Mar 2013 17:04:32 +0000 X-ASF-Spam-Status: No, hits=2.9 required=5.0 tests=HTML_MESSAGE,SPF_HELO_PASS,SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (athena.apache.org: local policy) Received: from [216.86.168.183] (HELO mxout-08.mxes.net) (216.86.168.183) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 13 Mar 2013 17:04:27 +0000 Received: from mail-la0-f51.google.com (unknown [209.85.215.51]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by smtp.mxes.net (Postfix) with ESMTPSA id A1EA3509C2 for ; Wed, 13 Mar 2013 13:04:05 -0400 (EDT) Received: by mail-la0-f51.google.com with SMTP id fo13so1374092lab.24 for ; Wed, 13 Mar 2013 10:04:04 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:x-received:x-originating-ip:in-reply-to:references :date:message-id:subject:from:to:content-type:x-gm-message-state; bh=ySTHRUUzvpNKeR/d3OkMMNDReEBZyteZ4YMIjDVut6M=; b=oW3MigkdDsFUT1qJsbv5qs+DEZJhjBhASGU0fMizz+/+6YlKfhQOV+thcYJ+8GVz75 E/t7+g718oT4svTegT54QJF3L3TR6LeI7g+iVHr3RgpxG4fV8hF16Vnd+IOTstpRXFRG OekLvY4K+pRFa3kXgBswI/7YGOkYXtuDDEvHQhLjXviscJnvELqKtaXJmjpVGeDHM86+ rz1CJ5TQ9yIyK2BmfenCc/MEhjagcEsQorUAWrJRdqdVL1LaUzFKqxslgKEOCrRH4Ou1 +SheC7qPAP4VihIiQLvww9EV9cffsAZ577FTPoYjQTw65tF25Wnbtgzm4/+IFvuWwlFY f87A== MIME-Version: 1.0 X-Received: by 10.152.135.205 with SMTP id pu13mr18081315lab.48.1363194244033; Wed, 13 Mar 2013 10:04:04 -0700 (PDT) Received: by 10.152.8.138 with HTTP; Wed, 13 Mar 2013 10:04:03 -0700 (PDT) X-Originating-IP: [91.137.97.21] In-Reply-To: <5140A9CD.1010208@xup.nl> References: <5140A9CD.1010208@xup.nl> Date: Wed, 13 Mar 2013 18:04:03 +0100 Message-ID: Subject: Re: ConcurrentModicationException on TDB storage provider (SingleDataset) From: =?ISO-8859-1?Q?Reto_Bachmann=2DGm=FCr?= To: dev@clerezza.apache.org Content-Type: multipart/alternative; boundary=f46d044284f8ad0f0c04d7d164ff X-Gm-Message-State: ALoCoQkuehVrCgxtFNru8qcV6OzRRXXvalW8oFO9mRQomIHlIwHyj4LpcqP4dzgVc5TWockMXJ+x X-Virus-Checked: Checked by ClamAV on apache.org --f46d044284f8ad0f0c04d7d164ff Content-Type: text/plain; charset=ISO-8859-1 Hi Minto Interesting problem.... What I'm wondering is what graph is ARQ (com.hp.hpl.jena.sparql.engine) iterating over here? It might be worth checking if at com.hp.hpl.jena.sparql.engine.iterator.QueryIterTriplePatterm does anything which could be mapped to entering a readlock on the graph while iterating over it. In principle I think for non-fastalane queries (i.e. the only thing there is now) that all the graphs against which a query is directed should be locked. For queries with a WildCard for the graph-name (like yours) the TcManager should be locked as a whole. Such a query would not be suitable for the fastlane anyway. Unless all graphs in TcManager come from the same TcProvider. But this is hardly the case as there typical instance there are also virtual graphs. Cheers, Reto On Wed, Mar 13, 2013 at 5:31 PM, Minto van der Sluis wrote: > Hi Folks, > > I ran into an issue is both the existing SingleTdbDatasetTcProvider and > my customized version (see CLEREZZA-736). > > How to reproduce: > 1) Have some process constantly inject new named graphs (I had a process > injecting 1000 named graphs) > 2) perform a query while 1 is still running. I used the following query: > > SELECT ?graphName WHERE { GRAPH ?graphName {} } LIMIT 10 OFFSET 0 > > 3) repeat step 2 a number of times (since the error does not always occur) > > This results in a ConcurrentModificationException (see stacktrace > below). I am not sure whether this is a Clerezza or Jena issue. > > Anyone an idea what is causing this? Or more importantly how to fix it? > > Should I create a Jira issue for this? > > Regards, > > -- > ir. ing. Minto van der Sluis > Software innovator / renovator > Xup BV > > > Stacktrace: > java.util.ConcurrentModificationException: Iterator: started at 7103, now > 7105 > at > com.hp.hpl.jena.tdb.sys.DatasetControlMRSW.policyError(DatasetControlMRSW.java:157) > at > com.hp.hpl.jena.tdb.sys.DatasetControlMRSW.access$000(DatasetControlMRSW.java:32) > at > com.hp.hpl.jena.tdb.sys.DatasetControlMRSW$IteratorCheckNotConcurrent.checkCourrentModification(DatasetControlMRSW.java:110) > at > com.hp.hpl.jena.tdb.sys.DatasetControlMRSW$IteratorCheckNotConcurrent.hasNext(DatasetControlMRSW.java:118) > at org.openjena.atlas.iterator.Iter$4.hasNext(Iter.java:295) > at > com.hp.hpl.jena.tdb.store.GraphTDBBase$ProjectQuadsToTriples.hasNext(GraphTDBBase.java:173) > at > com.hp.hpl.jena.util.iterator.WrappedIterator.hasNext(WrappedIterator.java:76) > at > org.apache.clerezza.rdf.jena.storage.JenaGraphAdaptor$1.hasNext(JenaGraphAdaptor.java:106) > at > org.apache.clerezza.rdf.core.impl.AbstractTripleCollection$1.hasNext(AbstractTripleCollection.java:78) > at > org.apache.clerezza.rdf.core.access.LockingIterator.hasNext(LockingIterator.java:47) > at > org.apache.clerezza.rdf.jena.facade.JenaGraph$1.hasNext(JenaGraph.java:95) > at > com.hp.hpl.jena.util.iterator.WrappedIterator.hasNext(WrappedIterator.java:76) > at > com.hp.hpl.jena.sparql.engine.iterator.QueryIterTriplePattern$TripleMapper.hasNextBinding(QueryIterTriplePattern.java:151) > at > com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112) > at > com.hp.hpl.jena.sparql.engine.iterator.QueryIterRepeatApply.hasNextBinding(QueryIterRepeatApply.java:79) > at > com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112) > at > com.hp.hpl.jena.sparql.engine.iterator.QueryIterBlockTriples.hasNextBinding(QueryIterBlockTriples.java:64) > at > com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112) > at > com.hp.hpl.jena.sparql.engine.main.iterator.QueryIterGraph$QueryIterGraphInner.hasNextBinding(QueryIterGraph.java:123) > at > com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112) > at > com.hp.hpl.jena.sparql.engine.iterator.QueryIterRepeatApply.hasNextBinding(QueryIterRepeatApply.java:79) > at > com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112) > at > com.hp.hpl.jena.sparql.engine.iterator.QueryIterConvert.hasNextBinding(QueryIterConvert.java:59) > at > com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112) > at > com.hp.hpl.jena.sparql.engine.iterator.QueryIterSlice.hasNextBinding(QueryIterSlice.java:76) > at > com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112) > at > com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:40) > at > com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112) > at > com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:40) > at > com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:112) > at > com.hp.hpl.jena.sparql.engine.ResultSetStream.hasNext(ResultSetStream.java:72) > at > org.apache.clerezza.rdf.jena.sparql.ResultSetWrapper.(ResultSetWrapper.java:39) > at > org.apache.clerezza.rdf.jena.sparql.JenaSparqlEngine.execute(JenaSparqlEngine.java:68) > at > org.apache.clerezza.rdf.core.access.TcManager.executeSparqlQuery(TcManager.java:272) > ... > > --f46d044284f8ad0f0c04d7d164ff--