SOLR slave正在执行完整复制,因为它无法删除未使用的索引目录

Ada*_*Dev 7 lucene solr solrj

当从属设备复制索引时,它会创建一个名称格式的索引目录, index.timestamp下次复制它时会尝试清理并创建一个带有新时间戳的新文件夹但在我的情况下它没有发生,每当我看到此警告和Slave触发器时fullCopy

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

任何人都可以为什么奴隶无法清理未使用的索引文件.

谢谢

Har*_*Yoo 3

如果不知道你的 solr 版本,很难回答。

根据我的经验,solr 复制不同的索引文件(比时间戳更新)。但是,如果您的索引被合并,那么它将触发完整复制。

这是一些相关的门票

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

** 更新 11/27/2017 **

这是 5x 分支中的相关部分,

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();
}
Run Code Online (Sandbox Code Playgroud)

因此,您有超过 30 个未使用的索引文件,这将触发警告消息和完整副本。我会尝试优化或合并主服务器的索引,看看是否复制了 fullCopy。