Frage / Problem

Manchmal kann es vorkommen, dass der Lucene-Index eines Repositories in einen inkonsistenten Zustand gerät, insbesondere wenn das Repository abstürzt oder der entsprechende Java-Prozess unerwartet beendet wird. Abhängig vom Schweregrad einer Indexinkonsistenz kann das Repository möglicherweise nicht mehr korrekt gestartet werden.

Antwort / Auflösung

Die LuceneHandler-Klasse von CRX erweitert die SearchIndex[1]-Klasse von Jackrabbit, die folgende Konfigurationsparameter zum Prüfen und Reparieren von Index-Inkonsistenzen zur Verfügung stellt:

Parameter Default Value Description
enableConsistencyCheck false wird eine Konsistenzprüfung in Abhängigkeit vom Parameter forceConsistencyCheck durchgeführt. Wenn auf false gesetzt, wird beim Start keine Konsistenzprüfung durchgeführt.
forceConsistencyCheck false Führt bei jedem Start eine Konsistenzprüfung durch. Bei false wird eine Konsistenzprüfung nur dann durchgeführt, wenn der Suchindex eine vorherige erzwungene Beendigung feststellt.
autoRepair true Fehler, die durch eine Konsistenzprüfung erkannt wurden, werden automatisch repariert. Bei false werden Fehler nur in das Protokoll geschrieben.

Um eine Index-Konsistenzprüfung auszulösen, konfigurieren Sie einfach die entsprechende workspace.xml-Konfigurationsdatei des betreffenden Workspace neu, z.B. <crx_home>/crx-quickstart/repository/workspaces/crx.default/workspace.xml:

workspace.xml

<SearchIndex class="com.day.crx.query.lucene.LuceneHandler">
    ...
    <param name="enableConsistencyCheck" value="true" />
    <param name="forceConsistencyCheck" value="true" />
    <param name="autoRepair" value="true" />
</SearchIndex>

Sobald diese Konfiguration eingerichtet ist, wird beim Start eine Konsistenzprüfung des Index durchgeführt, die - abhängig vom Volumen des Repositories und der Größe des Index - einige Zeit in Anspruch nehmen kann. Im error.log von CRX kann der Fortschritt der Prüfung überwacht werden:

*INFO * SearchIndex: Running consistency check...
*INFO * ConsistencyCheck: progress: 10%
*INFO * ConsistencyCheck: progress: 20%
...

Bitte beachten Sie, dass Sie die obige Konfiguration wieder entfernen müssen, da sonst die Konsistenzprüfung bei jedem Neustart des Repositorys ausgelöst wird, was die Startzeit verlangsamt. Die Änderung des Wertes von enableConsistencyCheck auf false deaktiviert auch die Prüfung insgesamt.

Index vollständig neu erstellen

Um den Index vollständig neu anzulegen, stoppen Sie das Repository, löschen die Indexverzeichnisse und starten das Repository neu. Der Neuaufbau des Index kann einige Stunden dauern. Die Indexverzeichnisse werden separat für jeden Cluster-Knoten, in den folgenden Verzeichnissen abgelegt:

  • crx-quickstart/repository/repository/index
  • crx-quickstart/repository/workspaces/crx.default/index
  • crx-quickstart/repository/workspaces/crx.system/index

Gilt für

CRX >= 1.4.x

Dieses Werk unterliegt den Bedingungen der Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.  Twitter™- und Facebook-Beiträge fallen nicht unter die Bedingungen der Creative Commons-Lizenz.

Rechtliche Hinweise   |   Online-Datenschutzrichtlinie