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