incubator-clerezza-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Reto Bachmann-Gmuer <reto.bachm...@trialox.org>
Subject Re: TDB ConcurrentModificationException
Date Wed, 28 Apr 2010 09:49:40 GMT
Hi Oli

In

Iterator<Triple> triples = contentGraph.filter(triple1.getSubject(), null,
null);
while (triples.hasNext()) {
          contentGraph.remove(triples.next());
}

you're removing a triple from the collection underlying collection, it is
correct that an exception is thrown in this case, the javadoc of the
exception says:

"For example, if a thread modifies a collection directly while it is
iterating over the collection with a fail-fast iterator, the iterator will
throw this exception. "

you can easily fix the problem by doing:
Iterator<Triple> triples = contentGraph.filter(triple1.getSubject(), null,
null);
while (triples.hasNext()) {
          triples.next();
          triples.remove();
}

It is recommended you have the 5 lines above in a write-lock, as operations
from other thereads may otherwise cause the ConcurrentModification
Exception.

Cheers,
reto

On Wed, Apr 28, 2010 at 11:38 AM, Oliver Strässer <
oliver.straesser@getunik.com> wrote:

> this error is thrown at many points.
>
> how can I prevent this?
>
> --getunik ag-------------------------------------------
>   oliver straesser              oliver.straesser@getunik.com
>   hardturmstrasse 101    fon: +41 (0)44 388 55 88
>   ch-8005 zuerich              fax: +41 (0)44 388 55 89
>
>    --aktuelles getunik projekt-------------------------
>    Agieren Sie lokal! Geo Marketing für Ihre E-Mail Kampagne:
> www.geomarketing.com
>
>  --best of swiss web awards 2009------------------
>    Gold & Silber für Connect2Earth / Bronze für WWF UK
>
> we make the web a better place - www.getunik.com
>
>
>
>
> *****************************************************************
> Bitte drucken Sie dieses E-Mail nur bei Bedarf aus. Die Umwelt dankt es
> Ihnen.
> *****************************************************************
>
> -----Ursprüngliche Nachricht-----
> Von: Oliver Strässer
> Gesendet: Mittwoch, 28. April 2010 09:19
> An: clerezza-dev@incubator.apache.org
> Betreff: TDB ConcurrentModificationException
> Wichtigkeit: Hoch
>
> Hi @ all
>
> After I changed the Actioncenter from sesame to tdb, i got the following
> Error:
>
>
> java.util.ConcurrentModificationException
>        at
> com.hp.hpl.jena.tdb.store.GraphTDBBase$MapperIteratorTriples.checkCourrentModification(GraphTDBBase.java:209)
>        at
> com.hp.hpl.jena.tdb.store.GraphTDBBase$MapperIteratorTriples.hasNext(GraphTDBBase.java:217)
>        at
> org.apache.clerezza.rdf.jena.storage.JenaGraphAdaptor$1.hasNext(JenaGraphAdaptor.java:80)
>        at
> org.apache.clerezza.rdf.core.impl.AbstractTripleCollection$1.hasNext(AbstractTripleCollection.java:77)
>        at
> org.apache.clerezza.rdf.core.access.LockingIterator.hasNext(LockingIterator.java:47)
>        at
> net.getunik.clerezza.core.doubleoptin.DoubleOptInProvider.removeTokensForDoubleOptInTriple(DoubleOptInProvider.java:153)
>
>
> The source on this place (on my side):
>
>      Iterator<Triple> triples = contentGraph.filter(triple1.getSubject(),
> null, null);
>                        while (triples.hasNext()) {
>                            contentGraph.remove(triples.next());
> }
>
>
> What is wrong there, with sesame was no problem?
>
> can you help me?
>
> --getunik ag-------------------------------------------
>  oliver straesser              oliver.straesser@getunik.com<mailto:
> oliver.straesser@getunik.com>
>  hardturmstrasse 101    fon: +41 (0)44 388 55 88
>  ch-8005 zuerich              fax: +41 (0)44 388 55 89
>
>   --aktuelles getunik projekt-------------------------
>   Agieren Sie lokal! Geo Marketing für Ihre E-Mail Kampagne:
> www.geomarketing.com<http://www.geomarketing.com/>
>
>  --best of swiss web awards 2009------------------
>   Gold & Silber für Connect2Earth / Bronze für WWF UK
>
> we make the web a better place - www.getunik.com<http://www.getunik.com/>
>
>
>
>
> *****************************************************************
> P Bitte drucken Sie dieses E-Mail nur bei Bedarf aus. Die Umwelt dankt es
> Ihnen.
> *****************************************************************
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message