jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dipu <dipu....@googlemail.com>
Subject Re: Exception while creating workspace created on another cluster node
Date Tue, 07 Apr 2009 10:48:06 GMT
Hi,

We managed to work around issue JCR-1558 by re-registering the custom
namespaces on the cluster node start up.

Just to be entirely clear on this, the repository.xml file has 3
FileSystems defined:
 - for repository
 - for workspaces
 - for versioning
Does each cluster node need its own FileSystem for *all* of these, or
only the repository and versioning?

Finally, all the clustering examples we've come across use the
LocalFileSystem. Is there a particular reason for this? We'd like to
use the DBFileSystem - is this likely to cause us any problems?

Thanks for everything.
Dipu

On Wed, Apr 1, 2009 at 3:30 PM, Dipu <dipu.wkt@googlemail.com> wrote:
> Hi Thomas,
>
> Thank you for the rapid reply. We cannot reproduce the problem
> starting a node with an empty repository. The problem only appears
> when:
>
> - Cluster Node 1 is started against an empty repository and creates a
> workspace, registering custom namespaces and nodetypes (Cluster Node 1
> starts up without issue)
>
> - Cluster Node 2 is started up without a copy of the custom namespace
> and nodetype definitions in its own FileSystem (Cluster Node 2 fails
> to start up)
>
> It looks like issue JCR-1558 matches the problem I'm having exactly.
> Is there any work planned on that particular issue? I ask because the
> custom namespaces and nodetypes are something we can't realistically
> get away from, as we are using Brix, which makes use of these.
>
> Thanks & Regards
> Dipu
>
>
>
>
> On Wed, Apr 1, 2009 at 2:01 PM, Thomas Müller <thomas.mueller@day.com> wrote:
>> Hi,
>>
>> It looks like a different problem. Can you reproduce this problem
>> starting with an empty repository?
>>
>> Regards,
>> Thomas
>>
>>
>> On Wed, Apr 1, 2009 at 3:53 PM, Dipu <dipu.wkt@googlemail.com> wrote:
>>> Hi all,
>>>
>>> It looks like the problem i am getting now is what mentioned here
>>> https://issues.apache.org/jira/browse/JCR-1558
>>>
>>> Is it an issue or is it again some thing configured wrongly in my repository.xml
>>>
>>> Thanks & Regards
>>> Dipu
>>>
>>> On Thu, Mar 19, 2009 at 12:51 PM, Thomas Müller <thomas.mueller@day.com>
wrote:
>>>> Hi,
>>>>
>>>> Most likely the problem is that both cluster nodes point to the same
>>>> file system. I have updated the documentation at
>>>> http://wiki.apache.org/jackrabbit/Clustering
>>>>
>>>> "Clustering in Jackrabbit works as follows: content is shared between
>>>> all cluster nodes. That means all Jackrabbit cluster nodes need access
>>>> to the SAME persistent storage (persistence manager and data store).
>>>> However, each cluster node needs its own (private) FileSystem and
>>>> search index. "
>>>>
>>>> Regards,
>>>> Thomas
>>>>
>>>>
>>>>
>>>> 2009/3/19 Dipu <dipu.wkt@googlemail.com>:
>>>>> Hi Thomas,
>>>>>
>>>>> Thanks for the reply.
>>>>>
>>>>> This is the error message that gets logged, there is no stacktrace
>>>>>
>>>>> 2009-03-19 11:19:19:046 ERROR
>>>>> org.apache.jackrabbit.core.cluster.ClusterNode
>>>>> [ClusterNode-dev_node_hestia] - Unable to create workspace: failed to
>>>>> create workspace configuration at path
>>>>> /configRootPath/brix_ws_59e521c6_676b_4782_9ba9_ef3651e1fb54/workspace.xml:
>>>>> file system entry already exists:
>>>>> /configRootPath/brix_ws_59e521c6_676b_4782_9ba9_ef3651e1fb54
>>>>>
>>>>> createFolder  method in DatabaseFileSystem class is throwing the
>>>>> new FileSystemException("file system entry already exists: " +
>>>>> folderPath); which gets propagated and ClusterNode.process method logs
>>>>> it.
>>>>>
>>>>> this is how the real URL looks
>>>>>
>>>>> <param name="url" value="jdbc:postgresql://something.production.mcom/dbname"
/>
>>>>>
>>>>> we connect to the DB fine and i don't think there is any problem there.
>>>>>
>>>>> Regards
>>>>> Dipu
>>>>>
>>>>>
>>>>> 2009/3/19 Thomas Müller <thomas.mueller@day.com>:
>>>>>> Hi,
>>>>>>
>>>>>> Could you post the exception message and stack trace please?
>>>>>>
>>>>>> <param name="url" value="jdbc:postgresql://url" />
>>>>>>
>>>>>> Could you also include the real URL?
>>>>>>
>>>>>> Regards,
>>>>>> Thomas
>>>>>>
>>>>>>
>>>>>> On Wed, Mar 18, 2009 at 5:41 PM, Dipu <dipu.wkt@googlemail.com>
wrote:
>>>>>>> Hi,
>>>>>>>
>>>>>>> This is how my repository.xml looks, can someone check if there
is
>>>>>>> anything wrong
>>>>>>> with my configuration that's resulting in the failure please.
>>>>>>>
>>>>>>> <?xml version="1.0"?>
>>>>>>> <!--
>>>>>>>   Licensed to the Apache Software Foundation (ASF) under one
or more
>>>>>>>   contributor license agreements.  See the NOTICE file distributed
with
>>>>>>>   this work for additional information regarding copyright ownership.
>>>>>>>   The ASF licenses this file to You under the Apache License,
Version 2.0
>>>>>>>   (the "License"); you may not use this file except in compliance
with
>>>>>>>   the License.  You may obtain a copy of the License at
>>>>>>>
>>>>>>>       http://www.apache.org/licenses/LICENSE-2.0
>>>>>>>
>>>>>>>   Unless required by applicable law or agreed to in writing,
software
>>>>>>>   distributed under the License is distributed on an "AS IS"
BASIS,
>>>>>>>   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
or implied.
>>>>>>>   See the License for the specific language governing permissions
and
>>>>>>>   limitations under the License.
>>>>>>> -->
>>>>>>> <!DOCTYPE Repository PUBLIC "-//The Apache Software Foundation//DTD
>>>>>>> Jackrabbit 1.5//EN"
>>>>>>>
>>>>>>> "http://jackrabbit.apache.org/dtd/repository-1.5.dtd">
>>>>>>> <!-- Example Repository Configuration File -->
>>>>>>> <Repository>
>>>>>>>    <!--
>>>>>>>        virtual file system where the repository stores global
state
>>>>>>>        (e.g. registered namespaces, custom node types, etc.)
>>>>>>>    -->
>>>>>>>    <!--
>>>>>>>    <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
>>>>>>>        <param name="path" value="${rep.home}/repository"/>
>>>>>>>    </FileSystem>
>>>>>>>    -->
>>>>>>>    <!--
>>>>>>>        Database File System (Cluster Configuration)
>>>>>>>        -->
>>>>>>>
>>>>>>>        <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
>>>>>>>                <param name="driver" value="org.postgresql.Driver"/>
>>>>>>>                <param name="url" value="jdbc:postgresql://url"
/>
>>>>>>>                <param name="user" value="user" />
>>>>>>>                <param name="password" value="pwd"
/>
>>>>>>>                <param name="schema" value="postgresql"/>
>>>>>>>                <param name="schemaObjectPrefix" value="J_R_FS_"/>
>>>>>>>        </FileSystem>
>>>>>>>
>>>>>>>    <!--
>>>>>>>        security configuration
>>>>>>>    -->
>>>>>>>    <Security appName="Jackrabbit">
>>>>>>>        <!--
>>>>>>>            access manager:
>>>>>>>            class: FQN of class implementing the AccessManager
interface
>>>>>>>        -->
>>>>>>>        <AccessManager
>>>>>>> class="org.apache.jackrabbit.core.security.SimpleAccessManager">
>>>>>>>            <!-- <param name="config" value="${rep.home}/access.xml"/>
-->
>>>>>>>        </AccessManager>
>>>>>>>
>>>>>>>        <LoginModule
>>>>>>> class="org.apache.jackrabbit.core.security.SimpleLoginModule">
>>>>>>>           <!-- anonymous user name ('anonymous' is the
default value) -->
>>>>>>>           <param name="anonymousId" value="anonymous"/>
>>>>>>>           <!--
>>>>>>>              default user name to be used instead of the
anonymous user
>>>>>>>              when no login credentials are provided (unset
by default)
>>>>>>>           -->
>>>>>>>           <!-- <param name="defaultUserId" value="superuser"/>
-->
>>>>>>>        </LoginModule>
>>>>>>>    </Security>
>>>>>>>
>>>>>>>    <!--
>>>>>>>        location of workspaces root directory and name of
default workspace
>>>>>>>    -->
>>>>>>>
>>>>>>>   <Workspaces rootPath="${rep.home}/workspaces"
>>>>>>> defaultWorkspace="default" configRootPath="/configRootPath"/>
>>>>>>>
>>>>>>>    <!--
>>>>>>>        workspace configuration template:
>>>>>>>        used to create the initial workspace if there's no
workspace yet
>>>>>>>    -->
>>>>>>>    <Workspace name="${wsp.name}">
>>>>>>>        <!--
>>>>>>>            virtual file system of the workspace:
>>>>>>>            class: FQN of class implementing the FileSystem
interface
>>>>>>>        -->
>>>>>>>         <!--
>>>>>>>        <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
>>>>>>>            <param name="path" value="${wsp.home}"/>
>>>>>>>        </FileSystem>
>>>>>>>        -->
>>>>>>>        <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
>>>>>>>                        <param name="driver" value="org.postgresql.Driver"/>
>>>>>>>                        <param name="url" value="jdbc:postgresql://url"
/>
>>>>>>>                        <param name="user" value="user"
/>
>>>>>>>                        <param name="password"
value="pwd" />
>>>>>>>                        <param name="schema" value="postgresql"/>
>>>>>>>                        <param name="schemaObjectPrefix"
value="J_FS_${wsp.name}_"/>
>>>>>>>                </FileSystem>
>>>>>>>
>>>>>>>        <!--
>>>>>>>            persistence manager of the workspace:
>>>>>>>            class: FQN of class implementing the PersistenceManager
interface
>>>>>>>        -->
>>>>>>>
>>>>>>>        <!--
>>>>>>>        <PersistenceManager
>>>>>>> class="org.apache.jackrabbit.core.persistence.bundle.DerbyPersistenceManager">
>>>>>>>          <param name="url" value="jdbc:derby:${wsp.home}/db;create=true"/>
>>>>>>>          <param name="schemaObjectPrefix" value="${wsp.name}_"/>
>>>>>>>        </PersistenceManager>
>>>>>>>        -->
>>>>>>>
>>>>>>>         <PersistenceManager
>>>>>>> class="org.apache.jackrabbit.core.persistence.bundle.PostgreSQLPersistenceManager">
>>>>>>>                <param name="url" value="jdbc:postgresql://url"/>
>>>>>>>                <param name="user" value="user"/>
>>>>>>>                <param name="password" value="pwd"/>
>>>>>>>                <param name="schemaObjectPrefix" value="J_PM_${wsp.name}_"/>
>>>>>>>                <param name="externalBLOBs" value="false"/>
>>>>>>>        </PersistenceManager>
>>>>>>>
>>>>>>>        <!--
>>>>>>>            Search index and the file system it uses.
>>>>>>>            class: FQN of class implementing the QueryHandler
interface
>>>>>>>        -->
>>>>>>>        <SearchIndex
>>>>>>> class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
>>>>>>>            <param name="path" value="${wsp.home}/index"/>
>>>>>>>            <param name="textFilterClasses"
>>>>>>> value="org.apache.jackrabbit.extractor.MsWordTextExtractor,org.apache.jackrabbit.extractor.MsExcelTextExtractor,org.apache.jackrabbit.extractor.MsPowerPointTextExtractor,org.apache.jackrabbit.extractor.PdfTextExtractor,org.apache.jackrabbit.extractor.OpenOfficeTextExtractor,org.apache.jackrabbit.extractor.RTFTextExtractor,brix.jcr.jackrabbit.HtmlTextExtractor,org.apache.jackrabbit.extractor.XMLTextExtractor"/>
>>>>>>>            <param name="extractorPoolSize " value="2"/>
>>>>>>>            <param name="supportHighlighting" value="true"/>
>>>>>>>        </SearchIndex>
>>>>>>>
>>>>>>>        <ISMLocking
>>>>>>> class="org.apache.jackrabbit.core.state.FineGrainedISMLocking"></ISMLocking>
>>>>>>>
>>>>>>>    </Workspace>
>>>>>>>
>>>>>>>    <!--
>>>>>>>        Configures the versioning
>>>>>>>    -->
>>>>>>>    <Versioning rootPath="${rep.home}/version">
>>>>>>>        <!--
>>>>>>>            Configures the filesystem to use for versioning
for the respective
>>>>>>>            persistence manager
>>>>>>>        -->
>>>>>>>        <!--
>>>>>>>        <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
>>>>>>>            <param name="path" value="${rep.home}/version"
/>
>>>>>>>        </FileSystem>
>>>>>>>         -->
>>>>>>>         <!--
>>>>>>>                Database File System and Persistence (Cluster
Configuration)
>>>>>>>                -->
>>>>>>>
>>>>>>>                <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
>>>>>>>                        <param name="driver" value="org.postgresql.Driver"/>
>>>>>>>                        <param name="url" value="jdbc:postgresql://url"
/>
>>>>>>>                        <param name="user" value="user"
/>
>>>>>>>                        <param name="password"
value="pwd" />
>>>>>>>                        <param name="schema" value="postgresql"/>
>>>>>>>                        <param name="schemaObjectPrefix"
value="J_V_FS_"/>
>>>>>>>                </FileSystem>
>>>>>>>
>>>>>>>        <!--
>>>>>>>            Configures the persistence manager to be used
for
>>>>>>> persisting version state.
>>>>>>>            Please note that the current versioning implementation
is based on
>>>>>>>            a 'normal' persistence manager, but this could
change in future
>>>>>>>            implementations.
>>>>>>>        -->
>>>>>>>        <!--
>>>>>>>        <PersistenceManager
>>>>>>> class="org.apache.jackrabbit.core.persistence.bundle.DerbyPersistenceManager">
>>>>>>>          <param name="url"
>>>>>>> value="jdbc:derby:${rep.home}/version/db;create=true"/>
>>>>>>>          <param name="schemaObjectPrefix" value="version_"/>
>>>>>>>        </PersistenceManager>
>>>>>>>         -->
>>>>>>>         <PersistenceManager
>>>>>>> class="org.apache.jackrabbit.core.persistence.bundle.PostgreSQLPersistenceManager">
>>>>>>>                <param name="url" value="dbc:postgresql://url"/>
>>>>>>>                <param name="user" value="user"/>
>>>>>>>                <param name="password" value="pwd"/>
>>>>>>>                <param name="schemaObjectPrefix" value="J_V_PM_"/>
>>>>>>>                <param name="externalBLOBs" value="false"/>
>>>>>>>        </PersistenceManager>
>>>>>>>
>>>>>>>        <ISMLocking
>>>>>>> class="org.apache.jackrabbit.core.state.FineGrainedISMLocking"></ISMLocking>
>>>>>>>
>>>>>>>    </Versioning>
>>>>>>>
>>>>>>>    <!--
>>>>>>>        Search index for content that is shared repository
wide
>>>>>>>        (/jcr:system tree, contains mainly versions)
>>>>>>>    -->
>>>>>>>    <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
>>>>>>>        <param name="path" value="${rep.home}/repository/index"/>
>>>>>>>        <param name="textFilterClasses"
>>>>>>> value="org.apache.jackrabbit.extractor.MsWordTextExtractor,org.apache.jackrabbit.extractor.MsExcelTextExtractor,org.apache.jackrabbit.extractor.MsPowerPointTextExtractor,org.apache.jackrabbit.extractor.PdfTextExtractor,org.apache.jackrabbit.extractor.OpenOfficeTextExtractor,org.apache.jackrabbit.extractor.RTFTextExtractor,brix.jcr.jackrabbit.HtmlTextExtractor,org.apache.jackrabbit.extractor.XMLTextExtractor"/>
>>>>>>>        <param name="extractorPoolSize " value="2"/>
>>>>>>>        <param name="supportHighlighting" value="true"/>
>>>>>>>    </SearchIndex>
>>>>>>>
>>>>>>>
>>>>>>>   <!--
>>>>>>>        Cluster Configuration
>>>>>>>        -->
>>>>>>>
>>>>>>>        <Cluster id="dev_node_hestia" syncDelay="5">
>>>>>>>                <Journal class="org.apache.jackrabbit.core.journal.DatabaseJournal">
>>>>>>>                        <param name="revision"
value="${rep.home}/revision"/>
>>>>>>>                        <param name="driver" value="org.postgresql.Driver"/>
>>>>>>>                        <param name="url" value="jdbc:postgresql://url"
/>
>>>>>>>                        <param name="user" value="user"
/>
>>>>>>>                        <param name="password"
value="pwd" />
>>>>>>>                        <param name="schema" value="postgresql"/>
>>>>>>>                        <param name="schemaObjectPrefix"
value="J_C_"/>
>>>>>>>                </Journal>
>>>>>>>    </Cluster>
>>>>>>>
>>>>>>>
>>>>>>>        <DataStore class="org.apache.jackrabbit.core.data.db.DbDataStore">
>>>>>>>                <param name="url" value="jdbc:postgresql://url"
/>
>>>>>>>                <param name="user" value="user" />
>>>>>>>                <param name="password" value="pwd"
/>
>>>>>>>                <param name="databaseType" value="postgresql"
/>
>>>>>>>                <param name="driver" value="org.postgresql.Driver"
/>
>>>>>>>                <param name="minRecordLength" value="1024"
/>
>>>>>>>                <param name="maxConnections" value="3"
/>
>>>>>>>                <param name="copyWhenReading" value="true"
/>
>>>>>>>        </DataStore>
>>>>>>>
>>>>>>>
>>>>>>> </Repository>
>>>>>>>
>>>>>>>
>>>>>>> Thanks
>>>>>>> Dipu
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

Mime
View raw message