SolrのレプリケーションでSnapPull failedエラー

結論的にはしょっぱかったですが、ちょいちょい調査に時間がかかったので、
もし世の中の誰かのお役に立てればと。。

【SolrのSlave側の挙動】
 
レプリケーション時にエラー
=======
致命的: SnapPull failed
org.apache.solr.common.SolrException: Index fetch failed :
~略~
Caused by: java.io.FileNotFoundException: File does not exist
[SOLR_HOME]/solr/data/index.20100427014530/_25uo.fdt
=======
 
レプリケーション中の検索でエラー
=======
2010/04/27 13:46:06 org.apache.solr.common.SolrException log
致命的: java.io.IOException: read past EOF
at org.apache.lucene.store.BufferedIndexInput.refill(BufferedIndexInput.java:151)
at org.apache.lucene.store.BufferedIndexInput.readByte(BufferedIndexInput.java:38)
=======
 
【ネット上の情報】
 
http://mail-archives.apache.org/mod_mbox/lucene-solr-user/201001.mbox/%3CE41FF5F3A2DD034990ADC7BBDE2B88030AA8B2E4B9@CMB02-RWC.corp.shutterfly.com%3E
上記のように同じような事で悩んでいる外国の方の書き込みをいくつか発見しましたが、
マルチコアの設定でデータファイルを同じ場所にしちゃってるとか、
それ系でちょっと自分の悩みとは違ってそうでした↓こんな感じの
 
【で・・・】
 
自分がSolrサーバを構築した時に、チョコチョコ中身をイジってたので、
以下のように既存のwarを解凍したディレクトリをsolr.bkという形で
残しておいていました。。
=======
1. warファイル 
 [SOLR_HOME]/warを置くディレクトリ/solr.war
2. warファイルが解凍されたディレクトリ
 [SOLR_HOME]/warを置くディレクトリ/solr
3. 元々あったwarファイルが解凍されたディレクトリのバックアップ
 [SOLR_HOME]/warを置くディレクトリ/solr.bk
=======
この3.が悪い子ちゃんで。
 
Slaveサーバで余計なWebアプリケーションを置いておくと、
バックグランドで複数スレッドでレプリケーションの処理が動きます(>_<)
 
そりゃあ、インデックスファイルの整合性も取れなくなるわということで、
上記3.をrmしてやったらエラーは出なくなりました。
 
めでたしめでたし。

コメント

タイトルとURLをコピーしました