2013-02-26 64 views
1

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有沒有談到這個

它是如何工作的,以及我錯過了什麼來解決這個問題?

+1

請提及Solr的版本。如果它是4.0,請嘗試升級到4.1 – aitchnyu 2013-02-27 12:45:48

+0

先生,它實際上是4.1,你認爲他們有代碼問題嗎? – Hilmi 2013-02-27 13:11:04

+0

4.2.0版也發生在我身上 – 2014-12-10 14:34:05

回答

0

在schema.xml中,你的_版本的_字段類型是什麼?我們遇到了這個問題,我們的_版本_字段類型被設置爲字符串,並且必須更改爲slong。

這隻在我們開始使用分片和/或複製時才顯現出來。當它是單個節點上的單核時,根本沒有問題。

錯誤的方式

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

奏效

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

修正的方式 -

的類型應該是 「長」。它解決了這個問題。