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
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
|