You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jspwiki.apache.org by Juan Pablo Santos Rodríguez <ju...@gmail.com> on 2020/02/23 17:41:15 UTC

Re: JSPWiki search broken? (Could not load codec 'Lucene80'. Did you forget to add lucene-backward-codecs.jar?)

Hi Harry,

that Lucene80 constant is suspicious, as it means you're somehow relying on
the Lucene 8.0 codec to do the indexing, and the end of
the stacktrace is telling that you only have available Lucene 8.4(.1),
which is what JSPWiki bundles. IIRC, on previous versions of Lucene
you had to supply this constant on your code, but it is not necessary
anymore, and also IIRC, JSPWiki doesn't specify it anymore.

I'm finishing a big push so cannot test right now other than unit testing,
but would you mind seeing if there are Lucene/JSPWiki old classes
on tomcat's work dir / try triggering a full Lucene reindex to see if that
is enough to solve the issue? If it doesn't, please allow me a couple of
days (tops) to see if I can reproduce it? Agree to add the dependency if
it's needed.


best regards,
juan pablo

On Sun, Feb 23, 2020 at 2:57 PM Harry Metske <ha...@gmail.com> wrote:

> Hi,
>
> I noticed that my jspwiki search is broken, see below stacktrace.
> Adding lucene-backward-codecs.jar to the pom.xml, rebuilding and
> redeploying fixes the problem.
>
> I think it was broken a few versions earlier already, should we add that
> dependency?
>
> cheers,
> Harry
>
>
> 2020-02-23 14:49:33,077 INFO search.SearchManager - AJAX search failed;
> java.lang.IllegalArgumentException: Could not load codec 'Lucene80'.  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
>
> org.apache.wiki.search.LuceneSearchProvider.findPages(LuceneSearchProvider.java:480)
> at
>
> org.apache.wiki.search.SearchManager$JSONSearch.findPages(SearchManager.java:202)
> at
>
> org.apache.wiki.search.SearchManager$JSONSearch.service(SearchManager.java:132)
> at
>
> org.apache.wiki.ajax.WikiAjaxDispatcherServlet.performAction(WikiAjaxDispatcherServlet.java:144)
> at
>
> org.apache.wiki.ajax.WikiAjaxDispatcherServlet.doPost(WikiAjaxDispatcherServlet.java:104)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
> at
>
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
> at
>
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
> at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
> at
>
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
> at
>
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
> at
>
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
> at
>
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
> at
>
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
> at
>
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
> at
>
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
> at
>
> org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
> at
>
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
> at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
> at
> org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
> at
>
> org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
> at
>
> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)
> at
> org.apache.tomcat.util.net
> .NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)
> at
> org.apache.tomcat.util.net
> .SocketProcessorBase.run(SocketProcessorBase.java:49)
> at
>
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
> at
>
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
> at
>
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
> at java.base/java.lang.Thread.run(Thread.java:834)
> Caused by: java.lang.IllegalArgumentException: An SPI class of type
> org.apache.lucene.codecs.Codec with name 'Lucene80' does not exist.  You
> need to add the corresponding JAR file supporting this SPI to your
> classpath.  The current classpath supports the following names: [Lucene84]
> 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)
> ... 37 more
>

Re: JSPWiki search broken? (Could not load codec 'Lucene80'. Did you forget to add lucene-backward-codecs.jar?)

Posted by Harry Metske <ha...@gmail.com>.
thanks for the tip, you were right. I removed the lucene index and had it
recreated, search works fine now again.

cheers,
Harry


On Sun, 23 Feb 2020 at 18:41, Juan Pablo Santos Rodríguez <
juanpablo.santos@gmail.com> wrote:

> Hi Harry,
>
> that Lucene80 constant is suspicious, as it means you're somehow relying on
> the Lucene 8.0 codec to do the indexing, and the end of
> the stacktrace is telling that you only have available Lucene 8.4(.1),
> which is what JSPWiki bundles. IIRC, on previous versions of Lucene
> you had to supply this constant on your code, but it is not necessary
> anymore, and also IIRC, JSPWiki doesn't specify it anymore.
>
> I'm finishing a big push so cannot test right now other than unit testing,
> but would you mind seeing if there are Lucene/JSPWiki old classes
> on tomcat's work dir / try triggering a full Lucene reindex to see if that
> is enough to solve the issue? If it doesn't, please allow me a couple of
> days (tops) to see if I can reproduce it? Agree to add the dependency if
> it's needed.
>
>
> best regards,
> juan pablo
>
> On Sun, Feb 23, 2020 at 2:57 PM Harry Metske <ha...@gmail.com>
> wrote:
>
> > Hi,
> >
> > I noticed that my jspwiki search is broken, see below stacktrace.
> > Adding lucene-backward-codecs.jar to the pom.xml, rebuilding and
> > redeploying fixes the problem.
> >
> > I think it was broken a few versions earlier already, should we add that
> > dependency?
> >
> > cheers,
> > Harry
> >
> >
> > 2020-02-23 14:49:33,077 INFO search.SearchManager - AJAX search failed;
> > java.lang.IllegalArgumentException: Could not load codec 'Lucene80'.  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
> >
> >
> org.apache.wiki.search.LuceneSearchProvider.findPages(LuceneSearchProvider.java:480)
> > at
> >
> >
> org.apache.wiki.search.SearchManager$JSONSearch.findPages(SearchManager.java:202)
> > at
> >
> >
> org.apache.wiki.search.SearchManager$JSONSearch.service(SearchManager.java:132)
> > at
> >
> >
> org.apache.wiki.ajax.WikiAjaxDispatcherServlet.performAction(WikiAjaxDispatcherServlet.java:144)
> > at
> >
> >
> org.apache.wiki.ajax.WikiAjaxDispatcherServlet.doPost(WikiAjaxDispatcherServlet.java:104)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
> > at
> >
> >
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
> > at
> >
> >
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
> > at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
> > at
> >
> >
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
> > at
> >
> >
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
> > at
> >
> >
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
> > at
> >
> >
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
> > at
> >
> >
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
> > at
> >
> >
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
> > at
> >
> >
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
> > at
> >
> >
> org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
> > at
> >
> >
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
> > at
> >
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
> > at
> >
> org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
> > at
> >
> >
> org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
> > at
> >
> >
> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)
> > at
> > org.apache.tomcat.util.net
> > .NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)
> > at
> > org.apache.tomcat.util.net
> > .SocketProcessorBase.run(SocketProcessorBase.java:49)
> > at
> >
> >
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
> > at
> >
> >
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
> > at
> >
> >
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
> > at java.base/java.lang.Thread.run(Thread.java:834)
> > Caused by: java.lang.IllegalArgumentException: An SPI class of type
> > org.apache.lucene.codecs.Codec with name 'Lucene80' does not exist.  You
> > need to add the corresponding JAR file supporting this SPI to your
> > classpath.  The current classpath supports the following names:
> [Lucene84]
> > 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)
> > ... 37 more
> >
>