tjake / Solandra

Solandra = Solr + Cassandra
Apache License 2.0
882 stars 150 forks source link

admin/luke handler broken by update to Solr 3.1 #86

Open davidstrauss opened 13 years ago

davidstrauss commented 13 years ago

This commit breaks the admin/luke handler: https://github.com/tjake/Solandra/commit/a03d730987c9d37b0cb1ac9b983a7dd1e5ccb1b2

Steps to reproduce:

  1. 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.
  2. 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)
davidstrauss commented 13 years ago

It's worth noting that Drupal's Solr module requires Luke for index introspection as part of the faceting support.

davidstrauss commented 13 years ago

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.