I may be wrong, but I don't believe the ConcurrentModificationException has 
anything to do with database-level concurrency. Does TDB allow multiple 
separate JVMs to concurrently access/modify a specific datastore? It has been 
awhile since I used TDB, I did not think it supported this.


-----Original Message-----
From: Emmanuelle [mailto:[email protected]] 
Sent: Tuesday, November 20, 2012 1:50 PM
To: [email protected]
Subject: Re: Concurrency problems with TDB

Hi again,

It's fixed I think. I was reading the model before starting the transaction...
Sorry for the inconvenience.


On Tue, Nov 20, 2012 at 6:30 PM, Emmanuelle <[email protected]> wrote:
> Hi all,
>
> I'm currently working on my master thesis that's related to tracking 
> students activities to provide adapted services and recommendations to 
> help their learning. I have implemented an ontology using Protege and 
> loaded it into a TDB directory. The ontology models students, learning 
> resources and stores the activity of the students on those resources 
> at a learning platform. In the background, the learning platform sends 
> those events to the ontology using a webservice interface implemented 
> in Axis which is the one accessing the TDB ontology for reading and 
> writing.
>
> I started to stress test sending concurrent requests to the webservice 
> and I'm getting concurrency errors as follow:
> java.util.ConcurrentModificationException: Reader = 3, Writer = 1
>         at 
> com.hp.hpl.jena.tdb.sys.DatasetControlMRSW.policyError(DatasetControlMRSW.java:157)
>         at 
> com.hp.hpl.jena.tdb.sys.DatasetControlMRSW.policyError(DatasetControlMRSW.java:152)
>         at 
> com.hp.hpl.jena.tdb.sys.DatasetControlMRSW.checkConcurrency(DatasetControlMRSW.java:79)
>         at 
> com.hp.hpl.jena.tdb.sys.DatasetControlMRSW.startRead(DatasetControlMRSW.java:46)
>        ......
> (versions listed at the end of this note)
>
> I understand that jena-TDB handles transactions and I'm using it in my 
> code, and on the other side, that the axis2 webservice is using a 
> single JVM with multiple threads (I hope not to be wrong on that one) 
> but it seems that TDB doesn't lock the dataset for writing. Can you 
> please confirm? Should I take care of locking?
>
> I've been searching this list and the internet for similar problems, I 
> have found several posts but couldn't find a solution for it. I'm new 
> to semantic web technologies, it's the first time I'm using jena and 
> TDB so probably I've missed something. Any help will be greatly 
> appreciated.
>
> Thanks in advance,
> Emmanuelle
>
> Versions:
> I've tried to update to jena-2.7.4 + tdb-0.9.4 but was getting errors 
> in tomcat with them so I gave up.
> - jena-core-2.7.0-incubating
> - jena-tdb-0.9.0-incubating
> - pellet 2.3.0
> - java version "1.6.0_35":
> Java(TM) SE Runtime Environment (build 1.6.0_35-b10) Java HotSpot(TM) 
> 64-Bit Server VM (build 20.10-b01, mixed mode)
> - tomcat5.5.35
> - axis2 1.5.6

Reply via email to