2017-11-14 4 views
7

インデックスをレプリケートすると、次回のレプリケート時に index.timestampという名前形式のインデックスディレクトリが作成され、新しいフォルダ新しいタイムスタンプではなく、私の場合、そのは起きていないし、毎回では私はこの警告を表示し、スレーブはFULLCOPYSOLRスレーブは未使用のインデックスディレクトリを削除できなかったため、完全コピーを行っています

Unable to cleanup unused lucene index files so we must do a full copy instead

を引き起こす可能性がスレーブは、未使用のインデックスファイルをクリーンアップすることができない理由を誰も。

おかげ

+0

スレーブは、それ自体でクリーンアップしない、マスターインデックスのコピーのみを保持します。しかし、あなたのマスターはまだ未使用のインデックスを保持しています。テストすることができれば、インデックスをバックアップし、コアを「最適化」してみてください。スレーブでこの問題を再現できるかどうかを確認してください。 –

答えて

3

あなたのSolrバージョンを知らなくても答えることは非常に困難です。私の経験から

、(タイムスタンプより新しい)異なるSolrのコピーのインデックスファイル。ただし、索引がマージされている場合は、完全コピーがトリガーされます。ここで

は、いくつかの関連チケットである

https://issues.apache.org/jira/browse/SOLR-6640

**更新2017年11月27日**

これは5倍ブランチの関連する部分であり、

https://github.com/apache/lucene-solr/blob/branch_5x/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java#L398-L418

try { 
    IndexWriter indexWriter = writer.get(); 
    int c = 0; 
    indexWriter.deleteUnusedFiles(); 
    while (hasUnusedFiles(indexDir, commit)) { 
     indexWriter.deleteUnusedFiles(); 
     LOG.info("Sleeping for 1000ms to wait for unused lucene index files to be delete-able"); 
     Thread.sleep(1000); 
     c++; 
     if (c >= 30) { 
      LOG.warn("IndexFetcher unable to cleanup unused lucene index files so we must do a full copy instead"); 
      isFullCopyNeeded = true; 
      break; 
     } 
    } 
    if (c > 0) { 
     LOG.info("IndexFetcher slept for " + (c * 1000) + "ms for unused lucene index files to be delete-able"); 
    } 
} finally { 
    writer.decref(); 
} 

だから、あなたが3以上のものを持っています未使用のインデックスファイルが0個あり、警告メッセージ&フルコピーがトリガーされます。 マスターからインデックスを最適化またはマージし、fullCopyがレプリケートされているかどうかを確認します。

+0

伝統的なマスター/スレーブかsolrcloudですか?私はそれがマスター/スレーブだと思ったが、あなたのタグは私を混乱させる。 –

+0

SOLR Version usingは5.2.1と従来のマスタ/スレーブ設定です。ほとんどの場合、ログに警告が表示されるSaying *は未使用のインデックスディレクトリをクリーンアップできないため、完全コピーのレプリケーションがトリガーされます*これを回避する方法についてのアイデア –

+0

共有されたリンクは有益でしたが、問題に何が直面しているか。 –

関連する問題