Author: stefan
Date: Fri Dec 7 08:15:26 2007
New Revision: 602139
URL: http://svn.apache.org/viewvc?rev=602139&view=rev
Log:
improved error reporting in case the repository can't be instantiated
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java?rev=602139&r1=602138&r2=602139&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java
(original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java
Fri Dec 7 08:15:26 2007
@@ -231,113 +231,117 @@
log.info("Starting repository...");
- this.repConfig = repConfig;
-
- // Acquire a lock on the repository home
- repLock = new RepositoryLock(repConfig.getHomeDir());
- repLock.acquire();
-
- // setup file systems
- repStore = repConfig.getFileSystemConfig().createFileSystem();
- String fsRootPath = "/meta";
try {
- if (!repStore.exists(fsRootPath) || !repStore.isFolder(fsRootPath)) {
- repStore.createFolder(fsRootPath);
- }
- } catch (FileSystemException fse) {
- String msg = "failed to create folder for repository meta data";
- log.error(msg, fse);
- throw new RepositoryException(msg, fse);
- }
- metaDataStore = new BasedFileSystem(repStore, fsRootPath);
-
- // init root node uuid
- rootNodeId = loadRootNodeId(metaDataStore);
-
- // load repository properties
- repProps = loadRepProps();
- nodesCount = Long.parseLong(repProps.getProperty(STATS_NODE_COUNT_PROPERTY, "0"));
- propsCount = Long.parseLong(repProps.getProperty(STATS_PROP_COUNT_PROPERTY, "0"));
-
- // create registries
- nsReg = createNamespaceRegistry(new BasedFileSystem(repStore, "/namespaces"));
- ntReg = createNodeTypeRegistry(nsReg, new BasedFileSystem(repStore, "/nodetypes"));
-
- if (repConfig.getDataStoreConfig() != null) {
- assert InternalValue.USE_DATA_STORE;
- dataStore = createDataStore();
- } else {
- dataStore = null;
- }
+ this.repConfig = repConfig;
- // init workspace configs
- Iterator iter = repConfig.getWorkspaceConfigs().iterator();
- while (iter.hasNext()) {
- WorkspaceConfig config = (WorkspaceConfig) iter.next();
- WorkspaceInfo info = createWorkspaceInfo(config);
- wspInfos.put(config.getName(), info);
- }
-
- // initialize optional clustering
- // put here before setting up any other external event source that a cluster node
- // will be interested in
- if (repConfig.getClusterConfig() != null) {
- clusterNode = createClusterNode();
- nsReg.setEventChannel(clusterNode);
- ntReg.setEventChannel(clusterNode);
- }
-
- // init version manager
- vMgr = createVersionManager(repConfig.getVersioningConfig(),
- delegatingDispatcher);
- if (clusterNode != null) {
- vMgr.setEventChannel(clusterNode.createUpdateChannel(null));
- }
+ // Acquire a lock on the repository home
+ repLock = new RepositoryLock(repConfig.getHomeDir());
+ repLock.acquire();
+
+ // setup file systems
+ repStore = repConfig.getFileSystemConfig().createFileSystem();
+ String fsRootPath = "/meta";
+ try {
+ if (!repStore.exists(fsRootPath) || !repStore.isFolder(fsRootPath)) {
+ repStore.createFolder(fsRootPath);
+ }
+ } catch (FileSystemException fse) {
+ String msg = "failed to create folder for repository meta data";
+ log.error(msg, fse);
+ throw new RepositoryException(msg, fse);
+ }
+ metaDataStore = new BasedFileSystem(repStore, fsRootPath);
- // init virtual node type manager
- virtNTMgr = new VirtualNodeTypeStateManager(getNodeTypeRegistry(),
- delegatingDispatcher, NODETYPES_NODE_ID, SYSTEM_ROOT_NODE_ID);
+ // init root node uuid
+ rootNodeId = loadRootNodeId(metaDataStore);
- // initialize startup workspaces
- initStartupWorkspaces();
+ // load repository properties
+ repProps = loadRepProps();
+ nodesCount = Long.parseLong(repProps.getProperty(STATS_NODE_COUNT_PROPERTY, "0"));
+ propsCount = Long.parseLong(repProps.getProperty(STATS_PROP_COUNT_PROPERTY, "0"));
+
+ // create registries
+ nsReg = createNamespaceRegistry(new BasedFileSystem(repStore, "/namespaces"));
+ ntReg = createNodeTypeRegistry(nsReg, new BasedFileSystem(repStore, "/nodetypes"));
+
+ if (repConfig.getDataStoreConfig() != null) {
+ assert InternalValue.USE_DATA_STORE;
+ dataStore = createDataStore();
+ } else {
+ dataStore = null;
+ }
- // initialize system search manager
- getSystemSearchManager(repConfig.getDefaultWorkspaceName());
+ // init workspace configs
+ Iterator iter = repConfig.getWorkspaceConfigs().iterator();
+ while (iter.hasNext()) {
+ WorkspaceConfig config = (WorkspaceConfig) iter.next();
+ WorkspaceInfo info = createWorkspaceInfo(config);
+ wspInfos.put(config.getName(), info);
+ }
- // after the workspace is initialized we pass a system session to
- // the virtual node type manager
+ // initialize optional clustering
+ // put here before setting up any other external event source that a cluster
node
+ // will be interested in
+ if (repConfig.getClusterConfig() != null) {
+ clusterNode = createClusterNode();
+ nsReg.setEventChannel(clusterNode);
+ ntReg.setEventChannel(clusterNode);
+ }
- // todo FIXME it odd that the *global* virtual node type manager
- // is using a session that is bound to a single specific workspace
- virtNTMgr.setSession(getSystemSession(repConfig.getDefaultWorkspaceName()));
+ // init version manager
+ vMgr = createVersionManager(repConfig.getVersioningConfig(),
+ delegatingDispatcher);
+ if (clusterNode != null) {
+ vMgr.setEventChannel(clusterNode.createUpdateChannel(null));
+ }
- // now start cluster node as last step
- if (clusterNode != null) {
- try {
- clusterNode.start();
- } catch (ClusterException e) {
- String msg = "Unable to start clustered node, forcing shutdown...";
- log.error(msg, e);
- shutdown();
- throw new RepositoryException(msg, e);
+ // init virtual node type manager
+ virtNTMgr = new VirtualNodeTypeStateManager(getNodeTypeRegistry(),
+ delegatingDispatcher, NODETYPES_NODE_ID, SYSTEM_ROOT_NODE_ID);
+
+ // initialize startup workspaces
+ initStartupWorkspaces();
+
+ // initialize system search manager
+ getSystemSearchManager(repConfig.getDefaultWorkspaceName());
+
+ // after the workspace is initialized we pass a system session to
+ // the virtual node type manager
+
+ // todo FIXME the *global* virtual node type manager is using a session that
is bound to a single specific workspace...
+ virtNTMgr.setSession(getSystemSession(repConfig.getDefaultWorkspaceName()));
+
+ // now start cluster node as last step
+ if (clusterNode != null) {
+ try {
+ clusterNode.start();
+ } catch (ClusterException e) {
+ String msg = "Unable to start clustered node, forcing shutdown...";
+ log.error(msg, e);
+ shutdown();
+ throw new RepositoryException(msg, e);
+ }
}
- }
- // amount of time in seconds before an idle workspace is automatically
- // shut down
- int maxIdleTime = repConfig.getWorkspaceMaxIdleTime();
- if (maxIdleTime != 0) {
- // start workspace janitor thread
- Thread wspJanitor = new Thread(new WorkspaceJanitor(maxIdleTime * 1000));
- wspJanitor.setName("WorkspaceJanitor");
- wspJanitor.setPriority(Thread.MIN_PRIORITY);
- wspJanitor.setDaemon(true);
- wspJanitor.start();
+ // amount of time in seconds before an idle workspace is automatically
+ // shut down
+ int maxIdleTime = repConfig.getWorkspaceMaxIdleTime();
+ if (maxIdleTime != 0) {
+ // start workspace janitor thread
+ Thread wspJanitor = new Thread(new WorkspaceJanitor(maxIdleTime * 1000));
+ wspJanitor.setName("WorkspaceJanitor");
+ wspJanitor.setPriority(Thread.MIN_PRIORITY);
+ wspJanitor.setDaemon(true);
+ wspJanitor.start();
+ }
+ } catch (RepositoryException e) {
+ log.error("failed to start Repository: " + e.getMessage(), e);
+ throw e;
}
log.info("Repository started");
}
-
+
public DataStore getDataStore() {
return dataStore;
}
|