Ein inkonsistenter Versionsverlauf kann zu Fehlfunktionen vieler CQ-Vorgänge führen, einschließlich Replikation, Versionswiederherstellung und Installation von Inhaltspaketen.
Wenn ein Versionsverlauf fehlerhaft ist, wird in den Protokolldateien die Ausnahme org.apache.jackrabbit.core.state.NoSuchItemStateException angezeigt. Und Sie sehen das Gleiche in den Stacktrace-Klassen (Stacktrace = „Stapel(speicher)zurückverfolgung“) aus dem Paket org.apache.jackrabbit.core.version.
Verwenden Sie den Systemparameter “org.apache.jackrabbit.version.recovery:”
Um den Parameter anzuwenden, gehen Sie wie folgt vor:
- Installieren Sie den neuesten Hotfix für CRX2.2. Sie können den neuesten CRX-Hotfix anfordern, indem Sie ein Supportticket senden. Befolgen Sie die Hotfix-Installationsanweisungen und stellen Sie sicher, dass CQ nach der Installation neu gestartet wird.
- Beenden Sie CQ/CRX.
- Fügen Sie dem Startskript den Parameter jvm hinzu: -Dorg.apache.jackrabbit.version.recovery=true
- Starten Sie CQ/CRX.
- Überprüfen Sie den Java-Prozessstatus (z. B. ps -ef | grep java), um sicherzustellen, dass der neue Parameter verwendet wird.
Wenn dies nicht der Fall ist, entfernt die Wiederherstellungsprozedur den fehlerhaften Verweis auf den Versionsspeicher. Insbesondere das mix:versionable Mixin und die Eigenschaften jcr:versionHistory, jcr:baseVersion, jcr:predecessors und jcr:isCheckedOut. Es ermöglicht dem Repository, ein neues Versionsdiagramm für den Knoten zu erstellen, zum Zeitpunkt, wenn es benötigt wird.
- Stoppen Sie die Instanz.
- Löschen Sie den Versionsordner und den Ordner repository/repository/index.
- (Optional) Fügen Sie in der crx.default workspace.xml für die Tar Persistence Manager-Daten „consistency/check fix“ hinzu.
- Fügen Sie -Dorg.apache.jackrabbit.version.recovery=true hinzu.
- Starten Sie die Instanz. Dies kann mehrere Stunden oder Tage dauern, je nach Menge der Daten und I/O-Performance. Ziehen Sie daher in Erwägung, zuerst auf einer Kopie zu testen.
- Wenn die Instanz fertig ist, erstellen Sie ein Paket aus /etc/workflow/models.
- Löschen Sie die /etc/workflow/models (mit CRXDE oder CRX Explorer).
- Installieren Sie das soeben erstellte Paket drüber, um die Workflowmodelle neu zu erstellen.
Hinweis: Beginnend mit CRX 2.2 hilft der im folgenden Artikel beschriebene Parameter, Inkonsistenzen zu vermeiden.