I tried without the async: async property on the lucene index, on an empty repository, and am seeing an exception.
Any idea on how I can try to find the cause of this? I assume if I tried to run with the lucene index on disk instead of in the segment store, I might avoid this, but the documentation doesn't really outline how to do this in much detail. 16:44:09,437 INFO index.IndexUpdate.enter() - line 110 [] - Reindexing will be performed for following indexes: [/oak:index/ka:owner, /oak:index/positionref, /oak:index/targetId, /oak:index/uuid, /oak:index/ka:id, /oak:index/mail, /oak:index/ka:tags, /oak:index/active, /oak:index/ka:applicationState, /oak:index/parentTargetId, /oak:index/reference, /oak:index/ka:uid, /oak:index/ka:rememberme, /oak:index/ka:state, /oak:index/ka:serial, /oak:index/ka:assetType, /oak:index/lucene, /oak:index/ka:series, /oak:index/ka:principal, /oak:index/affiliation, /oak:index/ka:expire, /oak:index/companyref, /oak:index/title, /oak:index/lastCommentDate, /oak:index/ka:subscriptionFrequency, /oak:index/nodetype] 16:44:09,547 WARN support.AbstractApplicationContext.refresh() - line 486 [] - Exception encountered during context initialization - cancelling refresh attempt org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'assetOwnerPermission': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: no.karriere.content.dao.AssetRepository no.karriere.content.authorization.permissions.AbstractPermission.assetRepository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'assetRepository': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: no.karriere.content.dao.jcr.MediaHelper no.karriere.content.dao.jcr.JcrAssetRepository.mediaHelper; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mediaHelper': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: no.karriere.content.services.repository.RepositoryService no.karriere.content.dao.jcr.MediaHelper.repositoryService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'repositoryService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: javax.jcr.Repository no.karriere.content.services.repository.RepositoryService.oakRepository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'getRepository' defined in class path resource [no/karriere/content/dao/jcr/repository/RepositoryConfiguration.class]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public javax.jcr.Repository no.karriere.content.dao.jcr.repository.RepositoryConfiguration.getRepository() throws no.karriere.content.exception.ContentException] threw exception; nested exception is java.lang.AbstractMethodError: org.apache.lucene.store.IndexOutput.getChecksum()J at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:298) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1148) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) [.... lots of nested spring stuff] Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public javax.jcr.Repository no.karriere.content.dao.jcr.repository.RepositoryConfiguration.getRepository() throws no.karriere.content.exception.ContentException] threw exception; nested exception is java.lang.AbstractMethodError: org.apache.lucene.store.IndexOutput.getChecksum()J at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:181) at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:592) ... 79 more Caused by: java.lang.AbstractMethodError: org.apache.lucene.store.IndexOutput.getChecksum()J at org.apache.lucene.codecs.CodecUtil.writeFooter(CodecUtil.java:186) at org.apache.lucene.index.SegmentInfos.finishCommit(SegmentInfos.java:1054) at org.apache.lucene.index.IndexWriter.finishCommit(IndexWriter.java:3130) at org.apache.lucene.index.IndexWriter.commitInternal(IndexWriter.java:3111) at org.apache.lucene.index.IndexWriter.shutdown(IndexWriter.java:913) at org.apache.lucene.index.IndexWriter.close(IndexWriter.java:984) at org.apache.lucene.index.IndexWriter.close(IndexWriter.java:954) at org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditorContext.closeWriter(LuceneIndexEditorContext.java:151) at org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditor.leave(LuceneIndexEditor.java:191) at org.apache.jackrabbit.oak.spi.commit.CompositeEditor.leave(CompositeEditor.java:74) at org.apache.jackrabbit.oak.spi.commit.VisibleEditor.leave(VisibleEditor.java:63) at org.apache.jackrabbit.oak.spi.commit.EditorDiff.process(EditorDiff.java:56) at org.apache.jackrabbit.oak.plugins.index.IndexUpdate.enter(IndexUpdate.java:116) at org.apache.jackrabbit.oak.spi.commit.VisibleEditor.enter(VisibleEditor.java:57) at org.apache.jackrabbit.oak.spi.commit.EditorDiff.process(EditorDiff.java:49) at org.apache.jackrabbit.oak.spi.commit.EditorHook.processCommit(EditorHook.java:54) at org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore$Commit.prepare(SegmentNodeStore.java:397) at org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore$Commit.optimisticMerge(SegmentNodeStore.java:428) at org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore$Commit.execute(SegmentNodeStore.java:484) at org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore.merge(SegmentNodeStore.java:162) at org.apache.jackrabbit.oak.spi.lifecycle.OakInitializer.initialize(OakInitializer.java:45) at org.apache.jackrabbit.oak.Oak.createContentRepository(Oak.java:518) at org.apache.jackrabbit.oak.jcr.Jcr.createRepository(Jcr.java:202) at no.karriere.content.dao.jcr.repository.RepositoryConfiguration.getRepository(RepositoryConfiguration.java:93) On 25 February 2015 at 16:41, Torgeir Veimo <[email protected]> wrote: > Thank you for your reply! > > Setting the :childOrder helps reduce the warning logs. I am still > getting these log entries a lot; > > 16:38:00,016 TRACE lucene.IndexDefinition.collectIndexRules() - line > 519 [] - Found rule 'IndexRule: ka:asset' for NodeType 'ka:asset' > 16:38:00,016 TRACE lucene.IndexDefinition.collectIndexRules() - line > 535 [] - Registering rule 'IndexRule: ka:asset' for name 'ka:asset' > > I am unsure why these keeps getting repeated, could it be that the > index configuration fails, and retries the next time I make a query? > > I am now using this code to configure; > > NodeBuilder index = IndexUtils.getOrCreateOakIndex(builder); > index.child("lucene") > .setProperty("jcr:primaryType", "oak:QueryIndexDefinition", Type.NAME) > .setProperty("compatVersion", "2") > .setProperty("type", "lucene") > .setProperty("async", "async") > .setProperty("reindex", true) > .child("indexRules") > .setProperty(":childOrder", ImmutableSet.of("ka:asset"), Type.STRINGS) > .child("ka:asset") > .setProperty("jcr:primaryType", "nt:unstructured", Type.NAME) > .child("properties") > .setProperty("jcr:primaryType", "nt:unstructured", Type.NAME) > .setProperty(":childOrder", > ImmutableSet.of("allProps"), Type.STRINGS) > .child("allProps") > .setProperty("jcr:primaryType", "nt:unstructured", > Type.NAME) > .setProperty("name", ".*") > .setProperty("isRegExp", true) > .setProperty("nodeScopeIndex", true); > > select * from [ka:asset] where lower(*) like '%admin%' > > yields two entries > > select * from [ka:asset] where contains(*,'admin') > > yields none. > > I am wondering if the setup of the repository is correct? I assume > that with the default LuceneIndexProvider() constructor, it will use > lucene indexes stored as segments in the segment store? > > > On 25 February 2015 at 10:46, Chetan Mehrotra <[email protected]> > wrote: >> Hi Torgeir, >> >> By default the Lucene index would be updated every 5 sec. So are you >> performing query immediately after adding the content? If thats the >> case you can remove setting "async" property at least for your >> testcase to get Lucene index triggered immediately after commit >> >>> 21:58:51,075 WARN lucene.IndexDefinition.collectIndexRules() - line >> 505 [0:0:0:0:0:0:0:1] - IndexRule node does not have orderable >> children in [Lucene Index : genericlucene(/oak:index/lucene)] >> 21:58:51,076 WARN >> >> You can create the index definition via JCR API. Basically the >> orderable children are detected via presence of ':childOrder' hidden >> property. When you set a nodetype to nt:unstructured then oak-jcr >> would set this property automatically to record the ordering. However >> if you do it via NodeStore API then that has to be done manually. >> >> Chetan Mehrotra > > > > -- > -Tor -- -Tor
