Solr statsCache 实现 LRUStatsCache 抛出 NullPointerException

Solr statsCache implementation LRUStatsCache throws NullPointerException

我在使用 JIRA 中的 Solr statsCache feature. Here is the feature request 时遇到了很多问题。我正在使用一个包含两个分片和两个复制因子的集合。

solrconfig.xml 中,我添加了以下 statsCache 实现:

<statsCache class="org.apache.solr.search.stats.LRUStatsCache"/>

我必须使用 statsCache 功能,因为基本分片中的文档比编辑分片中的多。但是分数必须是全局的。

当我查询启动分数计算的内容时,我得到 有时而不是确定性 以下异常:

java.lang.NullPointerException
    at org.apache.solr.search.stats.LRUStatsCache.getPerShardTermStats(LRUStatsCache.java:122)
    at org.apache.solr.search.stats.ExactStatsCache.sendGlobalStats(ExactStatsCache.java:237)
    at org.apache.solr.handler.component.QueryComponent.createMainQuery(QueryComponent.java:922)
    at org.apache.solr.handler.component.QueryComponent.regularDistributedProcess(QueryComponent.java:713)
    at org.apache.solr.handler.component.QueryComponent.distributedProcess(QueryComponent.java:666)
    at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:305)
    at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:143)
    at org.apache.solr.core.SolrCore.execute(SolrCore.java:2064)
    at org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:654)
    at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:450)
    at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:227)
    at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:196)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
    at org.eclipse.jetty.server.Server.handle(Server.java:497)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
    at org.eclipse.jetty.io.AbstractConnection.run(AbstractConnection.java:540)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.run(QueuedThreadPool.java:555)
    at java.lang.Thread.run(Thread.java:722)

请求 q=*:* 每次都工作正常。但是 q=SomeTerm 有时会导致 NullPointerException.

我尝试了所有 statsCache 实现。

我无法检测到问题。有人可以帮我解决这个问题吗?

如果您需要更多信息,请发表评论。

我在 Twitter 上与 @ApacheSolr 分享了这个问题。这是应该在 8 月第一周发布的 Solr 5.3 中修复的错误。

对话如下:

Solr statsCache implementation LRUStatsCache throws NullPointerException http://t.co/dLT7aygoye /cc @ApacheSolr (Link)

@tim_krueger we're aware of the bug. Should be fixed in the next release 5.3. See https://t.co/kt7QredwKr (Link)

@ApacheSolr Thanks for the answer. Is there a known release date for 5.3? (Link)

@tim_krueger can't say for sure but typically releases happen every 30-40 days so we can expect one around 1st week of August. (Link)