Uploaded image for project: 'Jackrabbit Content Repository'
  1. Jackrabbit Content Repository
  2. JCR-3929

ConsistencyCheck may fail on empty repository

    XMLWordPrintableJSON

Details

    Description

      Creation of fresh repository doesn't work with versions >= 2.7.1

      When I use version 2.6.5 or 2.7.0, remove old repository folder (D:\jackrabbitdocuments), drop/recreate journal database and start the server - everything work correctly.

      When I switch from 2.7.0 to 2.7.1, remove old repository folder (D:\jackrabbitdocuments), drop/recreate journal database and start the server I obtain following exception:

      2015-11-03 13:16:42.568 INFO  [localhost-startStop-1] RepositoryImpl.java:257 Starting repository...
      2015-11-03 13:16:42.578 INFO  [localhost-startStop-1] LocalFileSystem.java:164 LocalFileSystem initialized at path D:\jackrabbitdocuments\repository
      2015-11-03 13:16:42.696 INFO  [localhost-startStop-1] NodeTypeRegistry.java:870 no custom node type definitions found
      2015-11-03 13:16:42.974 INFO  [localhost-startStop-1] DatabaseJournal.java:375 Initialized local revision to 0
      2015-11-03 13:16:42.975 INFO  [localhost-startStop-1] DatabaseJournal.java:384 Cluster revision janitor thread not started
      2015-11-03 13:16:42.976 INFO  [localhost-startStop-1] DatabaseJournal.java:280 DatabaseJournal initialized.
      2015-11-03 13:16:42.979 INFO  [localhost-startStop-1] LocalFileSystem.java:164 LocalFileSystem initialized at path D:\jackrabbitdocuments\version
      2015-11-03 13:16:43.122 ERROR [localhost-startStop-1] RepositoryImpl.java:367 failed to start Repository: Cannot instantiate persistence manager org.apache.jackrabbit.core.persistence.pool.PostgreSQLPersistenceManager
      javax.jcr.RepositoryException: Cannot instantiate persistence manager org.apache.jackrabbit.core.persistence.pool.PostgreSQLPersistenceManager
      	at org.apache.jackrabbit.core.RepositoryImpl.createPersistenceManager(RepositoryImpl.java:1354) [jackrabbit-core-2.7.1.jar:2.7.1]
      	at org.apache.jackrabbit.core.RepositoryImpl.createVersionManager(RepositoryImpl.java:487) [jackrabbit-core-2.7.1.jar:2.7.1]
      	at org.apache.jackrabbit.core.RepositoryImpl.<init>(RepositoryImpl.java:312) [jackrabbit-core-2.7.1.jar:2.7.1]
      	at org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java:590) [jackrabbit-core-2.7.1.jar:2.7.1]
      	at org.apache.jackrabbit.jca.JCARepositoryManager.createNonTransientRepository(JCARepositoryManager.java:124) [jackrabbit-jca-2.7.1.jar:2.7.1]
      	at org.apache.jackrabbit.jca.JCARepositoryManager.createRepository(JCARepositoryManager.java:79) [jackrabbit-jca-2.7.1.jar:2.7.1]
      	at org.apache.jackrabbit.jca.JCAManagedConnectionFactory.createRepository(JCAManagedConnectionFactory.java:216) [jackrabbit-jca-2.7.1.jar:2.7.1]
      	at org.apache.jackrabbit.jca.JCAManagedConnectionFactory.createConnectionFactory(JCAManagedConnectionFactory.java:153) [jackrabbit-jca-2.7.1.jar:2.7.1]
      	at org.springframework.jca.support.LocalConnectionFactoryBean.afterPropertiesSet(LocalConnectionFactoryBean.java:118) [spring-tx-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637) [spring-beans-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574) [spring-beans-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545) [spring-beans-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) [spring-beans-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:305) [spring-beans-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) [spring-beans-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:301) [spring-beans-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.beans.factory.support.AbstractBeanFactory.getTypeForFactoryBean(AbstractBeanFactory.java:1468) [spring-beans-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryBean(AbstractAutowireCapableBeanFactory.java:808) [spring-beans-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.beans.factory.support.AbstractBeanFactory.isTypeMatch(AbstractBeanFactory.java:543) [spring-beans-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:447) [spring-beans-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:423) [spring-beans-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.beans.factory.BeanFactoryUtils.beanNamesForTypeIncludingAncestors(BeanFactoryUtils.java:220) [spring-beans-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1130) [spring-beans-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1069) [spring-beans-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:967) [spring-beans-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:508) [spring-context-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:486) [spring-context-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:615) [spring-context-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:169) [spring-beans-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) [spring-beans-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:308) [spring-context-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214) [spring-beans-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543) [spring-beans-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) [spring-beans-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:305) [spring-beans-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) [spring-beans-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:301) [spring-beans-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196) [spring-beans-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772) [spring-beans-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:834) [spring-context-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.context.support.AbstractApplicationContext.__refresh(AbstractApplicationContext.java:537) [spring-context-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java) [spring-context-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:446) [spring-web-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:328) [spring-web-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107) [spring-web-4.2.0.RELEASE.jar:4.2.0.RELEASE]
      	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5016) [catalina.jar:7.0.59]
      	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5524) [catalina.jar:7.0.59]
      	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [catalina.jar:7.0.59]
      	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575) [catalina.jar:7.0.59]
      	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565) [catalina.jar:7.0.59]
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_51]
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_51]
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_51]
      	at java.lang.Thread.run(Thread.java:745) [na:1.8.0_51]
      Caused by: java.lang.NullPointerException: null
      	at org.apache.jackrabbit.core.cache.ConcurrentCache.getSegment(ConcurrentCache.java:98) ~[jackrabbit-core-2.7.1.jar:2.7.1]
      	at org.apache.jackrabbit.core.cache.ConcurrentCache.get(ConcurrentCache.java:124) ~[jackrabbit-core-2.7.1.jar:2.7.1]
      	at org.apache.jackrabbit.core.persistence.bundle.AbstractBundlePersistenceManager.getBundle(AbstractBundlePersistenceManager.java:743) ~[jackrabbit-core-2.7.1.jar:2.7.1]
      	at org.apache.jackrabbit.core.persistence.bundle.AbstractBundlePersistenceManager.exists(AbstractBundlePersistenceManager.java:563) ~[jackrabbit-core-2.7.1.jar:2.7.1]
      	at org.apache.jackrabbit.core.persistence.bundle.ConsistencyCheckerImpl.internalCheckConsistency(ConsistencyCheckerImpl.java:246) ~[jackrabbit-core-2.7.1.jar:2.7.1]
      	at org.apache.jackrabbit.core.persistence.bundle.ConsistencyCheckerImpl.check(ConsistencyCheckerImpl.java:99) ~[jackrabbit-core-2.7.1.jar:2.7.1]
      	at org.apache.jackrabbit.core.persistence.bundle.AbstractBundlePersistenceManager.checkConsistency(AbstractBundlePersistenceManager.java:824) ~[jackrabbit-core-2.7.1.jar:2.7.1]
      	at org.apache.jackrabbit.core.persistence.pool.BundleDbPersistenceManager.init(BundleDbPersistenceManager.java:562) ~[jackrabbit-core-2.7.1.jar:2.7.1]
      	at org.apache.jackrabbit.core.persistence.pool.PostgreSQLPersistenceManager.init(PostgreSQLPersistenceManager.java:57) ~[jackrabbit-core-2.7.1.jar:2.7.1]
      	at org.apache.jackrabbit.core.RepositoryImpl.createPersistenceManager(RepositoryImpl.java:1350) [jackrabbit-core-2.7.1.jar:2.7.1]
      	... 53 common frames omitted
      2015-11-03 13:16:43.123 INFO  [localhost-startStop-1] RepositoryImpl.java:1061 Shutting down repository...
      2015-11-03 13:16:43.138 INFO  [localhost-startStop-1] RepositoryImpl.java:1166 Repository has been shutdown
      

      My repository.xml:

      <?xml version="1.0"?>
      <!DOCTYPE Repository
                PUBLIC "-//The Apache Software Foundation//DTD Jackrabbit 2.0//EN"
                "http://jackrabbit.apache.org/dtd/repository-2.0.dtd">
      <Repository>
          <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
              <param name="path" value="${rep.home}/repository"/>
          </FileSystem>
      	<DataStore class="org.apache.jackrabbit.core.data.FileDataStore">
              <param name="path" value="${repository.common}/datastore" />
              <param name="minRecordLength" value="100" />
          </DataStore>
      	<Security appName="Jackrabbit">
      		<SecurityManager class="org.apache.jackrabbit.core.DefaultSecurityManager"  workspaceName="security">
      			<WorkspaceAccessManager class="org.apache.jackrabbit.core.security.simple.SimpleWorkspaceAccessManager" />
      		</SecurityManager>
      		<AccessManager class="org.apache.jackrabbit.core.security.DefaultAccessManager" />
      		<LoginModule class="org.apache.jackrabbit.core.security.authentication.DefaultLoginModule">
      			<param name="adminId" value="${repository.user}" />
      			<param name="anonymousId" value="anonymous" />
      		</LoginModule>
      	</Security>
          <Workspaces rootPath="${rep.home}/workspaces" defaultWorkspace="default"/>
          <Workspace name="${wsp.name}">
              <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
                  <param name="path" value="${wsp.home}"/>
              </FileSystem>
              <PersistenceManager class="org.apache.jackrabbit.core.persistence.pool.PostgreSQLPersistenceManager">
                  <param name="driver" value="${repository.driver}" />
                  <param name="url" value="${repository.url}" />
                  <param name="user" value="${repository.user}" />
                  <param name="password" value="${repository.password}" />
                  <param name="schemaObjectPrefix" value="storage_" />
                  <param name="schema" value="${repository.ddl}" />
                  <param name="bundleCacheSize" value="8" />
                  <param name="minBlobSize" value="16384" />
                  <param name="consistencyCheck" value="true" />
                  <param name="consistencyFix" value="true" />
              </PersistenceManager>
              <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
                  <param name="path" value="${wsp.home}/index"/>
                  <param name="supportHighlighting" value="true"/>
              </SearchIndex>
              
               <WorkspaceSecurity>               
      		    <AccessControlProvider class="org.apache.jackrabbit.core.security.authorization.principalbased.ACLProvider">
      		        <param name="omit-default-permission" value="true" />
      		    </AccessControlProvider>
      		</WorkspaceSecurity>
          </Workspace>
      
          <Versioning rootPath="${rep.home}/version">
              <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
                  <param name="path" value="${rep.home}/version" />
              </FileSystem>
              <PersistenceManager class="org.apache.jackrabbit.core.persistence.pool.PostgreSQLPersistenceManager">
                  <param name="driver" value="${repository.driver}" />
                  <param name="url" value="${repository.url}" />
                  <param name="user" value="${repository.user}" />
                  <param name="password" value="${repository.password}" />
                  <param name="schemaObjectPrefix" value="version_" />
                  <param name="schema" value="${repository.ddl}" />
                  <param name="bundleCacheSize" value="8" />
                  <param name="minBlobSize" value="16384" />
                  <param name="consistencyCheck" value="true" />
                  <param name="consistencyFix" value="true" />
              </PersistenceManager>
          </Versioning>
      
          <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
              <param name="path" value="${rep.home}/repository/index"/>
              <param name="supportHighlighting" value="true"/>
              <param name="enableConsistencyCheck" value="true" />
              <param name="forceConsistencyCheck" value="true" />
              <param name="autoRepair" value="true" />
          </SearchIndex>
          
          <Cluster id="node-${tomcat.instance.name}" syncDelay="2000">
              <Journal class="org.apache.jackrabbit.core.journal.DatabaseJournal">
                  <param name="driver" value="${repository.driver}"/>
                  <param name="url" value="${repository.url}"/>
                  <param name="schema" value="${repository.ddl}"/>
                  <param name="schemaObjectPrefix" value="jrnl_"/>
                  <param name="user" value="${repository.user}" />
                  <param name="password" value="${repository.password}" />
              </Journal>
          </Cluster>
      </Repository>
      

      Attachments

        1. JCR_3929.patch
          17 kB
          Anton P.

        Issue Links

          Activity

            People

              reschke Julian Reschke
              kpasko Kamil
              Votes:
              5 Vote for this issue
              Watchers:
              9 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: