Solandra
Solandra copied to clipboard
admin/luke handler broken by update to Solr 3.1
This commit breaks the admin/luke handler: https://github.com/tjake/Solandra/commit/a03d730987c9d37b0cb1ac9b983a7dd1e5ccb1b2
Steps to reproduce:
- Index the Reuters data on Solandra build with commit 06d9215b0aa6467e728f and the luke interface enabled in solrconfig.xml. Request "/solandra/reuters/admin/luke?numTerms=0&wt=json" and see JSON.
- Index the Reuters data on Solandra build with commit a03d730987c9d37b0cb1 and the luke interface enabled in solrconfig.xml. Request "/solandra/reuters/admin/luke?numTerms=0&wt=json" and get a backtrace.
The backtrace:
Error 500 no segments* file found in org.apache.lucene.store.RAMDirectory@c3fa6cd lockFactory=org.apache.lucene.store.SingleInstanceLockFactory@26dfe303: files: []
org.apache.lucene.index.IndexNotFoundException: no segments* file found in org.apache.lucene.store.RAMDirectory@c3fa6cd lockFactory=org.apache.lucene.store.SingleInstanceLockFactory@26dfe303: files: []
at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:694)
at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:575)
at org.apache.lucene.index.IndexReader.lastModified(IndexReader.java:623)
at org.apache.solr.handler.admin.LukeRequestHandler.getIndexInfo(LukeRequestHandler.java:490)
at org.apache.solr.handler.admin.LukeRequestHandler.handleRequestBody(LukeRequestHandler.java:101)
at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
at org.apache.solr.core.SolrCore.execute(SolrCore.java:1360)
at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:356)
at solandra.SolandraDispatchFilter.execute(SolandraDispatchFilter.java:156)
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:252)
at solandra.SolandraDispatchFilter.doFilter(SolandraDispatchFilter.java:122)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:451)
It's worth noting that Drupal's Solr module requires Luke for index introspection as part of the faceting support.
Interesting that it seems to be using the org.apache.lucene.index.IndexReader class instead of the Lucandra IndexReader one would expect from the use of SolandraIndexReaderFactory.