Index: C:/test/jcr-patch/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java =================================================================== --- C:/test/jcr-patch/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java (revision 612623) +++ C:/test/jcr-patch/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java (working copy) @@ -229,7 +229,13 @@ repLock.acquire(); // setup file systems + try{ repStore = repConfig.getFileSystemConfig().createFileSystem(); + }catch(RepositoryException repException){ + repLock.release(); + throw repException; + } + try{ String fsRootPath = "/meta"; try { if (!repStore.exists(fsRootPath) || !repStore.isFolder(fsRootPath)) { @@ -270,10 +276,34 @@ nsReg.setEventChannel(clusterNode); ntReg.setEventChannel(clusterNode); } + }catch(RepositoryException repException){ + // At this point we only need to close the repStore and release the repLock + try { + // close repository file system + repStore.close(); + } catch (FileSystemException e) { + log.error("error while closing repository file system", e); + } + repLock.release(); + throw repException; + } // init version manager + try{ vMgr = createVersionManager(repConfig.getVersioningConfig(), delegatingDispatcher); + }catch(RepositoryException repException){ + // At this point we only need to close the repStore and release the repLock + try { + // close repository file system + repStore.close(); + } catch (FileSystemException e) { + log.error("error while closing repository file system", e); + } + repLock.release(); + throw repException; + } + try{ if (clusterNode != null) { vMgr.setEventChannel(clusterNode.createUpdateChannel(null)); } @@ -320,6 +350,10 @@ } log.info("Repository started"); + }catch(RepositoryException repException){ + shutdown(); + throw repException; + } } /**