solr ReplicationHandler - SnapPull无法下载文件

时间:2013-10-30 18:35:50

标签: solr replication solrj solrcloud

在从主服务器到从服务器的复制过程中,我们不断遇到此异常。 我们的索引大小是9.7 G,我们正在尝试从头开始复制一个奴隶。

2013年10月30日18:22:16,996 [explicit-fetchindex-cmd]错误ReplicationHandler - SnapPull失败:org.apache.solr.common.SolrException:无法完全下载_41c_Lucene41_0.doc。已下载0!= 107464871         at org.apache.solr.handler.SnapPuller $ DirectoryFileFetcher.cleanup(SnapPuller.java:1266)         at org.apache.solr.handler.SnapPuller $ DirectoryFileFetcher.fetchFile(SnapPuller.java:1146)         at org.apache.solr.handler.SnapPuller.downloadIndexFiles(SnapPuller.java:741)         at org.apache.solr.handler.SnapPuller.fetchLatestIndex(SnapPuller.java:405)         在org.apache.solr.handler.ReplicationHandler.doFetch(ReplicationHandler.java:319)         在org.apache.solr.handler.ReplicationHandler $ 1.run(ReplicationHandler.java:220)

我在一些帖子中读到solr 4.1中存在相关的错误,但是我们使用solr 4.3并尝试使用4.5.1。 它接缝DirectoryFileFetcher有时无法下载文件,文件被下载到大小为零的salve。

这是主设置:

<requestHandler name="/replication" class="solr.ReplicationHandler" >
   <lst name="master">
     <str name="replicateAfter">commit</str>
     <str name="replicateAfter">startup</str>
     <str name="confFiles">stopwords.txt,spellings.txt,synonyms.txt,protwords.txt,elevate.xml,currency.xml</str>
     <str name="commitReserveDuration">00:00:50</str>
   </lst>
</requestHandler>

和奴隶设置:

<requestHandler name="/replication" class="solr.ReplicationHandler" >
   <lst name="master">
     <str name="replicateAfter">commit</str>
     <str name="replicateAfter">startup</str>
     <str name="confFiles">stopwords.txt,spellings.txt,synonyms.txt,protwords.txt,elevate.xml,currency.xml</str>
     <str name="commitReserveDuration">00:00:50</str>
   </lst>
</requestHandler>

1 个答案:

答案 0 :(得分:0)

问题似乎与httpclient有关。 我打开了所有库的调试日志记录,并看到了一条消息&#34; Garbage in response&#34;在失败之前来自httpclient。

这是一个日志片段:

31 Oct 2013 18:10:40,360 [explicit-fetchindex-cmd] DEBUG DefaultClientConnection - Sending request: GET /solr-master/replication?comman

d = filecontent&amp; generation = 6814&amp; qt =%2Freplication&amp; file = _aa7_Lucene41_0.pos&amp; checksum = true&amp; wt = filestream HTTP / 1.1 2013年10月31日18:10:40,361 [explicit-fetchindex-cmd] DEBUG wire - &gt;&gt; &#34; GET / solr-master / replication?command = filecontent&amp; generation = 6814&amp; qt =%2Freplication&amp; file = _aa7_Lucene41_0.pos&amp; checksum = true&amp; wt = filestream HTTP / 1.1 [\ r] [\ n]&#34; 2013年10月31日18:10:40,361 [explicit-fetchindex-cmd] DEBUG wire - &gt;&gt; &#34; User-Agent:Solr [org.apache.solr.client.solrj.impl.HttpSolrServer] 1.0 [\ R] [\ n]的&#34; 2013年10月31日18:10:40,361 [explicit-fetchindex-cmd] DEBUG wire - &gt;&gt; &#34;主持人:solr-master.saltdev.sealdoc.com:8081 [\\] [\ n]&#34; 2013年10月31日18:10:40,361 [explicit-fetchindex-cmd] DEBUG wire - &gt;&gt; &#34;连接:Keep-Alive [\ r] [\ n]&#34; 2013年10月31日18:10:40,361 [explicit-fetchindex-cmd] DEBUG wire - &gt;&gt; &#34; [\ R] [\ n]的&#34; 2013年10月31日18:10:40,361 [explicit-fetchindex-cmd] DEBUG标题 - &gt;&gt; GET / solr-master / replication?command = filecontent&amp; generation = 6814&amp; qt =%2Freplication&amp; file = _aa7_Lucene41_0.pos&amp; checksum = true&amp; wt = filestream HTTP / 1.1 2013年10月31日18:10:40,361 [explicit-fetchindex-cmd] DEBUG标题 - &gt;&gt; User-Agent:Solr [org.apache.solr.client.solrj.impl.HttpSolrServer ] 1.0 2013年10月31日18:10:40,361 [explicit-fetchindex-cmd] DEBUG标题 - &gt;&gt;主持人:solr-master.saltdev.sealdoc.com:8081 2013年10月31日18:10:40,361 [explicit-fetchindex-cmd] DEBUG标题 - &gt;&gt;连接:保持活力 2013年10月31日18:10:40,361 [explicit-fetchindex-cmd] DEBUG wire - &lt;&lt; &#34; [\ R] [\ n]的&#34; 2013年10月31日18:10:40,361 [explicit-fetchindex-cmd] DEBUG DefaultHttpResponseParser - 垃圾回复: 2013年10月31日18:10:40,361 [explicit-fetchindex-cmd] DEBUG wire - &lt;&lt; &#34; 4 [\ R] [\ n]的&#34; 2013年10月31日18:10:40,361 [explicit-fetchindex-cmd] DEBUG DefaultHttpResponseParser - 响应中的垃圾:4 2013年10月31日18:10:40,361 [explicit-fetchindex-cmd] DEBUG wire - &lt;&lt; &#34; [为0x0] [为0x0] [为0x0] [为0x0] [\ R] [\ n]的&#34; 2013年10月31日18:10:40,361 [explicit-fetchindex-cmd] DEBUG DefaultHttpResponseParser - 响应中的垃圾:^ @ ^ @ ^ @ ^ @ 2013年10月31日18:10:40,361 [explicit-fetchindex-cmd] DEBUG wire - &lt;&lt; &#34; 0 [\ R] [\ n]的&#34; 2013年10月31日18:10:40,361 [explicit-fetchindex-cmd] DEBUG DefaultHttpResponseParser - 响应中的垃圾:0 2013年10月31日18:10:40,361 [explicit-fetchindex-cmd] DEBUG wire - &lt;&lt; &#34; [\ R] [\ n]的&#34; 2013年10月31日18:10:40,361 [explicit-fetchindex-cmd] DEBUG DefaultHttpResponseParser - 响应中的垃圾: 2013年10月31日18:10:40,398 [explicit-fetchindex-cmd] DEBUG DefaultClientConnection - Connection 0.0.0.0:55266<->172.16.77.121:8081已关闭 2013年10月31日18:10:40,398 [explicit-fetchindex-cmd] DEBUG DefaultClientConnection - 连接0.0.0.0:55266<->172.16.77.121:8081关闭 2013年10月31日18:10:40,398 [explicit-fetchindex-cmd] DEBUG DefaultClientConnection - Connection 0.0.0.0:55266<->172.16.77.121:8081已关闭 2013年10月31日18:10:40,398 [explicit-fetchindex-cmd] DEBUG PoolingClientConnectionManager - 已发布连接:[id:0] [route:{} - &gt; http://solr-master.saltdev.sealdoc.com:8081] [保持活力:1;路线分配:10000中的1;总分配:1的10000] 2013年10月31日18:10:40,425 [explicit-fetchindex-cmd] DEBUG CachingDirectoryFactory - 释放目录:/ opt / watchdox / solr-slave / data / index 2 false 2013年10月31日18:10:40,425 [explicit-fetchindex-cmd] DEBUG CachingDirectoryFactory - 重用缓存目录:CachedDir&lt;&gt; 2013年10月31日18:10:40,425 [explicit-fetchindex-cmd] DEBUG CachingDirectoryFactory - 释放目录:/ opt / watchdox / solr-slave / data 0 false 2013年10月31日18:10:40,425 [explicit-fetchindex-cmd] DEBUG CachingDirectoryFactory - 重用缓存目录:CachedDir&lt;&gt; 2013年10月31日18:10:40,427 [explicit-fetchindex-cmd] DEBUG CachingDirectoryFactory - 释放目录:/ opt / watchdox / solr-slave / data 0 false 2013年10月31日18:10:40,428 [explicit-fetchindex-cmd] DEBUG CachingDirectoryFactory - 用dir完成:CachedDir&lt;&gt; 2013年10月31日18:10:40,428 [explicit-fetchindex-cmd] DEBUG CachingDirectoryFactory - 释放目录:/opt/watchdox/solr-slave/data/index.20131031180837277 0 true 2013年10月31日18:10:40,428 [explicit-fetchindex-cmd] INFO CachingDirectoryFactory - 希望关闭/opt/watchdox/solr-slave/data/index.20131031180837277 [CachedDir&lt;&gt;] 2013年10月31日18:10:40,428 [explicit-fetchindex-cmd] INFO CachingDirectoryFactory - 关闭目录:/opt/watchdox/solr-slave/data/index.20131031180837277 2013年10月31日18:10:40,428 [explicit-fetchindex-cmd] INFO CachingDirectoryFactory - 在核心关闭之前删除目录:/opt/watchdox/solr-slave/data/index.20131031180837277 2013年10月31日18:10:40,878 [explicit-fetchindex-cmd] DEBUG CachingDirectoryFactory - 从缓存中删除:CachedDir&lt;&gt; 2013年10月31日18:10:40,878 [explicit-fetchindex-cmd] DEBUG CachingDirectoryFactory - 释放目录:/ opt / watchdox / solr-slave / data / index 1 false 2013年10月31日18:10:40,879 [explicit-fetchindex-cmd]错误ReplicationHandler - SnapPull失败:org.apache.solr.common.SolrException:无法完全下载_aa7_Lucene41_0.pos 。已下载0!= 1081710         在org.apache.solr.handler.SnapPuller $ DirectoryFileFetcher.cleanup(SnapPuller.java:1212)         at org.apache.solr.handler.SnapPuller $ DirectoryFileFetcher.fetchFile(SnapPuller.java:1092)         at org.apache.solr.handler.SnapPuller.downloadIndexFiles(SnapPuller.java:719)         at org.apache.solr.handler.SnapPuller.fetchLatestIndex(SnapPuller.java:397)         在org.apache.solr.handler.ReplicationHandler.doFetch(ReplicationHandler.java:317)         在org.apache.solr.handler.ReplicationHandler $ 1.run(ReplicationHandler.java:218)

2013年10月31日18:10:40,910 [http-bio-8080-exec-8] DEBUG CachingDirectoryFactory - 重用缓存目录:CachedDir&lt;&gt;

所以我将httpcomponents jar升级到他们最新的4.3.x版本,问题就消失了。 httpcomponents jars是solrj的依赖,在4.2.x版本中,我升级到httpclient-4.3.1,httpcore-4.3和httpmime-4.3.1 我现在运行了几次复制,没有任何问题,它现在按预期工作。 它只能在奴隶方面进行升级,但我也要升级主人。