异常重放日志:Solr

时间:2013-02-26 12:45:40

标签: solr

Solr工作得非常好,直到我跑完它就会突然发生异常

例外是:

WARNING: REPLAY_ERR: Exception replaying log

java.lang.UnsupportedOperationException
    at org.apache.lucene.queries.function.FunctionValues.longVal(FunctionValues.java:46)
    at org.apache.solr.update.VersionInfo.getVersionFromIndex(VersionInfo.java:201)
    at org.apache.solr.update.UpdateLog.lookupVersion(UpdateLog.java:711)
    at org.apache.solr.update.VersionInfo.lookupVersion(VersionInfo.java:184)
    at org.apache.solr.update.processor.DistributedUpdateProcessor.versionAdd(DistributedUpdateProcessor.java:571)
    at org.apache.solr.update.processor.DistributedUpdateProcessor.processAdd(DistributedUpdateProcessor.java:350)
    at org.apache.solr.update.UpdateLog$LogReplayer.doReplay(UpdateLog.java:1268)
    at org.apache.solr.update.UpdateLog$LogReplayer.run(UpdateLog.java:1159)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:722)

在深入研究这个问题后,我发现班级FunctionValues没有实现以下功能

public float floatVal(int doc) { throw new UnsupportedOperationException(); }
public int intVal(int doc) { throw new UnsupportedOperationException(); }
public long longVal(int doc) { throw new UnsupportedOperationException(); }
...

虽然在documentation中没有任何相关内容,

它是如何工作的,以及我缺少解决这个问题的方法?

2 个答案:

答案 0 :(得分:0)

在schema.xml中,你的_version_字段类型是什么?我们碰到了这个,我们的_version_字段类型设置为字符串,必须更改为slong。

这仅在我们开始使用分片和/或复制时表现出来。当它是单个节点上的单个核心时,根本没有问题。

错误的方式

<field name="_version_" type="string" indexed="true" stored="true" multiValued="false" />

有效的方式

<field name="_version_" type="slong" indexed="true" stored="true" multiValued="false" />

答案 1 :(得分:0)

更正 -

类型应为&#34; long&#34;。它解决了这个问题。