You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jackrabbit.apache.org by Charles Erwin <gr...@gmail.com> on 2012/04/23 23:41:57 UTC

Jackrabbit Workspace Configuration in Clustered Mode

Hello, we currently have a clustered Jackrabbit configuration using a
FileDatastore stored on a SAN via NFS and PostgreSQL as the
PersistenceManager shared amongst the nodes.  Currently, it looks like most
of the storage is being used in the database and not the datastore,
particularly the ws_bundle table is taking up a huge amount of space.  I
thought that our repository configuration should have put all of the files
in the datastore based on the Jackrabbit Wiki pages, but perhaps I am
missing something.  Here is my repository.xml file I'm using with comments
etc removed for brevity:

<?xml version="1.0"?>
<!--
   ...
-->
<!DOCTYPE Repository PUBLIC "-//The Apache Software Foundation//DTD
Jackrabbit 1.6//EN"
                            "
http://jackrabbit.apache.org/dtd/repository-1.6.dtd">

<Repository>

    <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
       <param name="driver" value="javax.naming.InitialContext" />
       <param name="url" value="java:comp/env/jdbc/repository" />
       <param name="schemaObjectPrefix" value="rep_"/>
       <param name="schema" value="postgresql"/>
   </FileSystem>

    <DataStore class="org.apache.jackrabbit.core.data.FileDataStore">
        <param name="path" value="${rep.home}/datastore"/>
        <param name="minRecordLength" value="100"/>
    </DataStore>

    <Security appName="Jackrabbit">
        <SecurityManager
class="org.apache.jackrabbit.core.security.simple.SimpleSecurityManager"
workspaceName="security">
        </SecurityManager>

        <AccessManager
class="org.apache.jackrabbit.core.security.simple.SimpleAccessManager">
        </AccessManager>

        <LoginModule
class="org.apache.jackrabbit.core.security.simple.SimpleLoginModule">
           <param name="anonymousId" value="anonymous"/>
           <param name="adminId" value="admin"/>
        </LoginModule>
    </Security>

    <Workspaces rootPath="${rep.home}/workspaces"
defaultWorkspace="default"/>
    <Workspace name="${wsp.name}">

        <FileSystem
class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
            <param name="path" value="${wsp.home}"/>
        </FileSystem>

        <PersistenceManager
class="org.apache.jackrabbit.core.persistence.pool.PostgreSQLPersistenceManager">
           <param name="driver" value="javax.naming.InitialContext"/>
           <param name="url" value="java:comp/env/jdbc/repository"/>
           <param name="schemaObjectPrefix" value="ws_"/>
           <param name="schema" value="postgresql"/>
           <param name="bundleCacheSize" value="128"/>
        </PersistenceManager>
    </Workspace>
    <Versioning rootPath="${rep.home}/version">
        <FileSystem
class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
            <param name="path" value="${rep.home}/version" />
        </FileSystem>

        <PersistenceManager
class="org.apache.jackrabbit.core.persistence.pool.PostgreSQLPersistenceManager">
            <param name="driver" value="javax.naming.InitialContext"/>
            <param name="url" value="java:comp/env/jdbc/repository"/>
            <param name="schemaObjectPrefix" value="version_"/>
            <param name="schema" value="postgresql"/>
            <param name="bundleCacheSize" value="64"/>
        </PersistenceManager>
    </Versioning>

    <Cluster id="node1" syncDelay="2000">
        <Journal class="org.apache.jackrabbit.core.journal.DatabaseJournal">
                <param name="revision" value="${rep.home}/revision.log" />
                <param name="driver" value="javax.naming.InitialContext"/>
                <param name="url" value="java:comp/env/jdbc/repository"/>
                <param name="databaseType" value="postgresql"/>
                <param name="schemaObjectPrefix" value="journal_"/>
        </Journal>
    </Cluster>

    <RepositoryLockMechanism
class="org.apache.jackrabbit.core.util.CooperativeFileLock" />

</Repository>


Does anyone know what I'm missing?  Should each persistence manager include
a DataStore element?  I could not find examples with that in it, but
evidently the workspace is storing most of the content in the database, and
not the datastore.  Note that almost all the nodes are relatively large
documents (> 100K ) and should definitely be smaller than the *
minRecordLength* I have set as a property.

Charles