2017-11-14 3 views
7

Wenn ein Slave den Index repliziert, erstellt er ein Indexverzeichnis mit dem Namenformat index.timestamp Wenn es das nächste Mal repliziert, versucht es zu bereinigen und einen neuen Ordner zu erstellen mit neuen Zeitstempel aber in meinem Fall ist es nicht passiert, und jedes Mal sehe ich diese Warnung und Slave auslösen einen fullCopySOLR-Slave macht volle Kopie, da es unbenutztes Indexverzeichnis nicht löschen konnte

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

Könnte jemand, warum Slave nicht in der Lage ist, die nicht verwendeten Index-Dateien zu bereinigen.

dank

+0

Slave behält nur die Kopie der Master-Indizes, nicht von selbst aufzuräumen. Es ist seltsam, aber Ihr Master behält immer noch nicht verwendete Indizes. Wenn Sie testen können, sichern Sie Ihren Index und versuchen Sie, den Kern zu "optimieren". und sehen Sie, ob Sie dieses Problem in Ihrem Slave replizieren können. –

Antwort

3

Es ist sehr schwierig, ohne zu wissen, Ihre solr Version zu beantworten.

Aus meiner Erfahrung kopiert Solr Index-Dateien, die anders ist (neuer als Zeitstempel). Wenn Ihre Indizes jedoch zusammengeführt werden, wird die vollständige Kopie ausgelöst.

Hier einige relevante Tickets

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

** Update ** 2017.11.27

ist dies ein relevanter Teil in 5x Zweig,

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(); 
} 

Also, Sie haben mehr als 3 0 ungenutzte Indexdateien und dies wird die Warnmeldung & vollständige Kopie auslösen. Ich würde versuchen, Indizes aus dem Master zu optimieren oder zusammenführen und sehen, ob fullCopy repliziert wird.

+0

Ist es traditioneller Master/Slave oder Solrcloud? Ich dachte, es wäre Master/Slave, aber dein Tag verwirrt mich. –

+0

SOLR Version verwendet ist 5.2.1 und seine traditionelle Master/Slave-Setup. Die meiste Zeit sehe ich die Warnung im Protokoll, das Saying * das unbenutzte Indexverzeichnis nicht bereinigen und folglich die vollständige Kopievervielfältigung * jede Idee auf, wie man dieses vermeidet –

+0

Der geteilte Link war informativ, aber ich denke nicht, dass es verbunden ist auf das Problem was vor mir liegt. –

Verwandte Themen