Hey All, I'm currently using Jackrabbit and having some concurrency issues[1]. The project I'm working on is storing data in an Oracle database (though we are doing some testing with Derby just won't use in in a production environment). As the issue describes if I have two users making changes through different sessions which actually have two different repositories hitting the same database, I get NPE exceptions even though the users aren't making conflicting changes. From what I've read about Persistence Managers[3] and Clustering[2], I need to make sure that I'm using a shared data source. When I logged the bug I was using the db.DerbyPersistenceManager (in production we are using db.OraclePersistenceManager). I have since changed to using the bundle.OraclePersistenceManager as it is supposed to be faster. So the persistence manager in both cases are storing their changes in the database. Is this what people mean by using a shared data source. I haven't seen any form of definition or clarification on what that exactly means. The other question I have is what is the relationship between the data source and the DataStore[4]? I read that configuring a Datatore will improve the performance of the bundle PM. But will it also help alleviate my concurrency problems?
Reading the mailing list I stumbled across reference to configuring the ISMLocking to solve some concurrency issues. So I have since configured both the workspace and versioning to use fine grained but that didn't alleviate my concurrency problems. anyone have any guidance on the issues/questions I'm having? Any help would be very appreciated. I've included my repository.xml file at the bottom if anyone sees something I haven't configured correctly. Micah [1] - https://issues.apache.org/jira/browse/JCR-1440 [2] - http://wiki.apache.org/jackrabbit/Clustering [3] - http://wiki.apache.org/jackrabbit/PersistenceManagerFAQ [4] - http://wiki.apache.org/jackrabbit/DataStore Repository.xml file: <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE Repository PUBLIC "-//The Apache Software Foundation//DTD Jackrabbit 1.4//EN" " http://jackrabbit.apache.org/dtd/repository-1.4.dtd"> <Repository> <FileSystem class="org.apache.jackrabbit.core.fs.db.OracleFileSystem"> <param name="url" value="jdbc:oracle:thin:<server>:1521:config" /> <param name="schemaObjectPrefix" value="test_beta_rep_" /> <param name="user" value="system" /> <param name="password" value="password" /> </FileSystem> <Security appName="Jackrabbit"> <AccessManager class="org.apache.jackrabbit.core.security.SimpleAccessManager"> </AccessManager> <LoginModule class="org.apache.jackrabbit.core.security.SimpleLoginModule"> </LoginModule> </Security> <Workspaces rootPath="${rep.home}/workspaces" defaultWorkspace="default" /> <Workspace name="${wsp.name}"> <FileSystem class="org.apache.jackrabbit.core.fs.db.OracleFileSystem"> <param name="url" value="jdbc:oracle:thin:<server>:1521:config" /> <param name="schemaObjectPrefix" value="test_beta_rep_" /> <param name="user" value="system" /> <param name="password" value="password" /> </FileSystem> <PersistenceManager class=" org.apache.jackrabbit.core.persistence.bundle.OraclePersistenceManager"> <param name="user" value="system" /> <param name="password" value="password" /> <param name="url" value="jdbc:oracle:thin:<server>:1521:config" /> <param name="schemaObjectPrefix" value="test_beta_pm_" /> <param name="externalBLOBs" value="false" /> </PersistenceManager> <ISMLocking class=" org.apache.jackrabbit.core.state.FineGrainedISMLocking"></ISMLocking> </Workspace> <Versioning rootPath="${rep.home}/version"> <FileSystem class="org.apache.jackrabbit.core.fs.db.OracleFileSystem"> <param name="url" value="jdbc:oracle:thin:<server>:1521:config" /> <param name="schemaObjectPrefix" value="test_beta_rep_ver_" /> <param name="user" value="system" /> <param name="password" value="password" /> </FileSystem> <PersistenceManager class=" org.apache.jackrabbit.core.persistence.bundle.OraclePersistenceManager"> <param name="url" value="jdbc:oracle:thin:<server>:1521:config" /> <param name="user" value="system" /> <param name="password" value="password" /> <param name="schemaObjectPrefix" value="test_beta_ver_pm_" /> <param name="externalBLOBs" value="false" /> </PersistenceManager> <ISMLocking class=" org.apache.jackrabbit.core.state.FineGrainedISMLocking"></ISMLocking> </Versioning> <Cluster id="Node1" syncDelay="5000"> <Journal class="org.apache.jackrabbit.core.journal.OracleDatabaseJournal "> <param name="revision" value="${rep.home}/revision.log" /> <param name="url" value="jdbc:oracle:thin:<server>:1521:config" /> <param name="driver" value="oracle.jdbc.driver.OracleDriver" /> <param name="user" value="system" /> <param name="password" value="password" /> </Journal> </Cluster> </Repository>
