jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Micah Whitacre" <mkwhita...@gmail.com>
Subject Shared Datasource and DataStore solve concurrency problems?
Date Tue, 11 Mar 2008 16:47:55 GMT
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>

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