Undocumented nessesary of lucene-backward-codecs.jar in 1.31.3?
mzch opened this issue · comments
para 1.31.3 reports an error as below:
2019-06-06 21:31:21 [ERROR] null
java.lang.IllegalArgumentException: Could not load codec 'Lucene70'. Did you forget to add lucene-backward-codecs.jar?
at org.apache.lucene.index.SegmentInfos.readCodec(SegmentInfos.java:420)
at org.apache.lucene.index.SegmentInfos.readCommit(SegmentInfos.java:352)
at org.apache.lucene.index.SegmentInfos.readCommit(SegmentInfos.java:289)
at org.apache.lucene.index.StandardDirectoryReader$1.doBody(StandardDirectoryReader.java:64)
at org.apache.lucene.index.StandardDirectoryReader$1.doBody(StandardDirectoryReader.java:61)
at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:680)
at org.apache.lucene.index.StandardDirectoryReader.open(StandardDirectoryReader.java:84)
at org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:76)
at org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:64)
at com.erudika.para.search.LuceneUtils.getIndexReader(LuceneUtils.java:878)
at com.erudika.para.search.LuceneUtils.searchQuery(LuceneUtils.java:719)
at com.erudika.para.search.LuceneSearch.findById(LuceneSearch.java:155)
at com.erudika.para.search.LuceneSearch$$EnhancerByGuice$$5b51948d.CGLIB$findById$21(<generated>)
at com.erudika.para.search.LuceneSearch$$EnhancerByGuice$$5b51948d$$FastClassByGuice$$4f525818.invoke(<generated>)
at com.google.inject.internal.cglib.proxy.$MethodProxy.invokeSuper(MethodProxy.java:228)
at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:76)
at com.erudika.para.aop.SearchQueryAspect.invokeTimedSearch(SearchQueryAspect.java:93)
at com.erudika.para.aop.SearchQueryAspect.invoke(SearchQueryAspect.java:78)
at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:78)
at com.google.inject.internal.InterceptorStackCallback.intercept(InterceptorStackCallback.java:54)
at com.erudika.para.search.LuceneSearch$$EnhancerByGuice$$5b51948d.findById(<generated>)
at com.erudika.para.search.LuceneSearch.findById(LuceneSearch.java:375)
at com.erudika.para.search.LuceneSearch$$EnhancerByGuice$$5b51948d.CGLIB$findById$20(<generated>)
at com.erudika.para.search.LuceneSearch$$EnhancerByGuice$$5b51948d$$FastClassByGuice$$4f525818.invoke(<generated>)
at com.google.inject.internal.cglib.proxy.$MethodProxy.invokeSuper(MethodProxy.java:228)
at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:76)
at com.erudika.para.aop.SearchQueryAspect.invoke(SearchQueryAspect.java:80)
at com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:78)
at com.google.inject.internal.InterceptorStackCallback.intercept(InterceptorStackCallback.java:54)
at com.erudika.para.search.LuceneSearch$$EnhancerByGuice$$5b51948d.findById(<generated>)
at com.erudika.para.utils.HealthUtils$1.performHealthCheck(HealthUtils.java:65)
at com.erudika.para.utils.HealthUtils$1.onInitialize(HealthUtils.java:93)
at com.erudika.para.Para.initialize(Para.java:110)
at com.erudika.para.ParaServer.initialize(ParaServer.java:153)
at com.erudika.para.ParaServer.runAsJAR(ParaServer.java:415)
at com.erudika.para.ParaServer.main(ParaServer.java:424)
at com.erudika.para.Run.main(Run.java:26)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
at org.springframework.boot.loader.PropertiesLauncher.main(PropertiesLauncher.java:593)
Caused by: java.lang.IllegalArgumentException: An SPI class of type org.apache.lucene.codecs.Codec with name 'Lucene70' does not exist. You need to add the corresponding JAR file supporting this SPI to your classpath. The current classpath supports the following names: [Lucene80]
at org.apache.lucene.util.NamedSPILoader.lookup(NamedSPILoader.java:116)
at org.apache.lucene.codecs.Codec.forName(Codec.java:116)
at org.apache.lucene.index.SegmentInfos.readCodec(SegmentInfos.java:416)
... 44 common frames omitted
2019-06-06 21:31:21 [WARN ] Server is unhealthy - the search index may be corrupted and may have to be rebuilt.
I installed lucense 8.1.1 and booted up para successfully, but please put it in the latest document.
A full reindex is required when migrating between major Lucene versions. In your case the index file is version 7 and Para 1.31.3
uses Lucene 8.
Sorry but how to fix this problem (I'm new to Para and Lucene)?
Download Lucense 8 from https://lucene.apache.org/core/downloads.html
and copy or move core jar and backward-codecs jar to lib directory as well as other plugins.
Rebuilding the index should also fix this - POST /v1/_reindex
http://paraio.org/docs/#053-api-reindex
The solution of @albogdano works, but notice that in my case I have to also delete the xxx-lucene
folders in the data
folder of para.
@katatunix thanks for that fix; I had to do the same thing.
@albogdano I did indeed try to do the reindexing first, which successfully completed, however, I still had no data until I removed both para-lucene
and scoold-lucene
and then reindexed again.
@weisjohn @katatunix Hm, I thought a full reindex would be enough... anyway I added backward-codecs
to the para-search-lucene
project to make such migrations easier. Erudika/para-search-lucene@06e035b
@albogdano Could you update this dependency para-search-lucene
in para-jar
/para-war
pom.xml
to the latest version?
@rafik777 yes, just pushed those to master now