You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@clerezza.apache.org by "Minto van der Sluis (JIRA)" <ji...@apache.org> on 2013/03/21 17:31:16 UTC

[jira] [Commented] (CLEREZZA-745) ConcurrentModicationException on TDB storage provider (SingleDataset)

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

Minto van der Sluis commented on CLEREZZA-745:
----------------------------------------------

Repeating my initial test still reveals the CME with the following stack trace:

java.util.ConcurrentModificationException
	at com.hp.hpl.jena.tdb.store.GraphTDBBase$MapperIteratorTriples.checkCourrentModification(GraphTDBBase.java:208)
	at com.hp.hpl.jena.tdb.store.GraphTDBBase$MapperIteratorTriples.hasNext(GraphTDBBase.java:216)
	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.jena.facade.JenaGraph$1.hasNext(JenaGraph.java:95)
	at com.hp.hpl.jena.util.iterator.WrappedIterator.hasNext(WrappedIterator.java:64)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIterTriplePattern$TripleMapper.hasNextBinding(QueryIterTriplePattern.java:132)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:66)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIterRepeatApply.hasNextBinding(QueryIterRepeatApply.java:57)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:66)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIterBlockTriples.hasNextBinding(QueryIterBlockTriples.java:53)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:66)
	at com.hp.hpl.jena.sparql.engine.main.iterator.QueryIterGraph$QueryIterGraphInner.hasNextBinding(QueryIterGraph.java:112)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:66)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIterRepeatApply.hasNextBinding(QueryIterRepeatApply.java:57)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:66)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIterConvert.hasNextBinding(QueryIterConvert.java:49)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:66)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIterSlice.hasNextBinding(QueryIterSlice.java:64)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:66)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:28)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:66)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:28)
	at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:66)
	at com.hp.hpl.jena.sparql.engine.ResultSetStream.hasNext(ResultSetStream.java:57)
	at org.apache.clerezza.rdf.jena.sparql.ResultSetWrapper.<init>(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:283)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.7.0_17]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)[:1.7.0_17]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_17]
	at java.lang.reflect.Method.invoke(Method.java:601)[:1.7.0_17]
	at org.apache.aries.proxy.impl.ProxyHandler$1.invoke(ProxyHandler.java:54)[12:org.apache.aries.proxy.impl:1.0.0]
	at org.apache.aries.proxy.impl.ProxyHandler.invoke(ProxyHandler.java:119)[12:org.apache.aries.proxy.impl:1.0.0]
	at org.apache.clerezza.rdf.core.access.$TcManager707321841.executeSparqlQuery(Unknown Source)[174:org.apache.clerezza.rdf.core:0.13.0.SNAPSHOT]
	at nl.overheid.stelsel.digimelding.astore.storage.clerezza.ClerezzaStorageProvider.query(ClerezzaStorageProvider.java:249)[222:astore-storage-clerezza:0.2.0.SNAPSHOT]
	at Proxy32b14c30_ed5c_4d25_b0ab_9786dd9c0ef8.query(Unknown Source)[:]
	at nl.overheid.stelsel.digimelding.astore.impl.managers.StorageManager.query(StorageManager.java:140)[217:astore-engine-impl:0.2.0.SNAPSHOT]
	at nl.overheid.stelsel.digimelding.astore.impl.managers.StorageManager.namedQuery(StorageManager.java:129)[217:astore-engine-impl:0.2.0.SNAPSHOT]
	at nl.overheid.stelsel.digimelding.astore.impl.AnnotationStoreServiceImpl.internalNamedQuery(AnnotationStoreServiceImpl.java:243)[217:astore-engine-impl:0.2.0.SNAPSHOT]
	at nl.overheid.stelsel.digimelding.astore.impl.AnnotationStoreServiceImpl.namedQuery(AnnotationStoreServiceImpl.java:158)[217:astore-engine-impl:0.2.0.SNAPSHOT]
	at Proxy15a3c918_5b0c_4252_9957_8ca3d8e7281a.namedQuery(Unknown Source)[:]
	at nl.overheid.stelsel.digimelding.astore.core.commands.NamedQueryAnnotationCommand.executeCommand(NamedQueryAnnotationCommand.java:79)[218:astore-engine-commands:0.2.0.SNAPSHOT]
	at nl.overheid.stelsel.digimelding.astore.core.commands.NamedQueryAnnotationCommand.doExecute(NamedQueryAnnotationCommand.java:45)[218:astore-engine-commands:0.2.0.SNAPSHOT]
	at org.apache.karaf.shell.console.OsgiCommandSupport.execute(OsgiCommandSupport.java:38)[14:org.apache.karaf.shell.console:2.3.0]
	at org.apache.felix.gogo.commands.basic.AbstractCommand.execute(AbstractCommand.java:35)[14:org.apache.karaf.shell.console:2.3.0]
	at org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:78)[14:org.apache.karaf.shell.console:2.3.0]
	at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:474)[14:org.apache.karaf.shell.console:2.3.0]
	at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:400)[14:org.apache.karaf.shell.console:2.3.0]
	at org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)[14:org.apache.karaf.shell.console:2.3.0]
	at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183)[14:org.apache.karaf.shell.console:2.3.0]
	at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120)[14:org.apache.karaf.shell.console:2.3.0]
	at org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:89)[14:org.apache.karaf.shell.console:2.3.0]
	at org.apache.karaf.shell.console.jline.Console.run(Console.java:175)[14:org.apache.karaf.shell.console:2.3.0]
	at java.lang.Thread.run(Thread.java:722)[:1.7.0_17]

To resolve this issue we probably need to upgrade the Jena dependencies (see also #CLEREZZA-726 )
                
> ConcurrentModicationException on TDB storage provider (SingleDataset)
> ---------------------------------------------------------------------
>
>                 Key: CLEREZZA-745
>                 URL: https://issues.apache.org/jira/browse/CLEREZZA-745
>             Project: Clerezza
>          Issue Type: Bug
>            Reporter: Rupert Westenthaler
>
> As reported by Minto van der Sluis in [1] the SingleDataset Jena TDB TcProvider can throw .ConcurrentModificationException when iterating over a read protected MGraph and a modification is done to an other graph managed in the same Jena TDB Dataset. This includes creating a new graph in the dataset.
> Based on a first analysis this is caused by the Single Dataset Jena TDB TcProvider using per TripleCollections ReadWrite Locks instead of a single ReadWrite Lock for all graphs managed by the same Jena TDB Dataset.
> [1] http://mail-archives.apache.org/mod_mbox/clerezza-dev/201303.mbox/%3C5140A9CD.1010208%40xup.nl%3E

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira