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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> >>> 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 <[email protected]>: >>>>> 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 <[email protected]>: >>>>>> 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 <[email protected]> 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 >>>>>>> >>>>>> >>>>> >>>> >>> >> >
