Problemumgehung und Behebung von Indexbeschädigungen mit AEM/AEM Forms
Wenn das Problem einer Indexbeschädigung in den AEM/AEM-Formularen auftritt, hilft Ihnen dieser Artikel, das Problem zu beheben, indem er zeigt, wie die im Repository enthaltenen Indexdaten gelöscht und der beschädigte Index neu indiziert werden kann.
Beschreibung description
Umgebung
Experience Manager Forms
Problem/Symptome
Ein beschädigter Index ist ein sehr ungewöhnlicher Fall. In diesem Fall werden jedoch Protokolleinträge angezeigt, die etwa wie folgt aussehen:17.01.2019 17:55:47.374 *WARN* [ pool-118-thread-4] org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate [ async] The index update failed org.apache.jackrabbit.oak.api.CommitFailedException: OakMerge0001: OakMerge0001: Failed to merge changes to the underlying store (retries 5, 5169 ms) at org.apache.jackrabbit.oak.spi.state.AbstractNodeStoreBranch.merge0(AbstractNodeStoreBranch.java:345) at org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBranch.merge(DocumentNodeStoreBranch.java:156) at org.apache.jackrabbit.oak.plugins.document.DocumentRootBuilder.merge(DocumentRootBuilder.java:160) at org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.merge(DocumentNodeStore.java:1588) at org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate.mergeWithConcurrencyCheck(AsyncIndexUpdate.java:581) at org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate.updateIndex(AsyncIndexUpdate.java:525) at org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate.runWhenPermitted(AsyncIndexUpdate.java:431) at org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate.run(AsyncIndexUpdate.java:323) at org.apache.sling.commons.scheduler.impl.QuartzJobExecutor.execute(QuartzJobExecutor.java:115) at org.quartz.core.JobRunShell.run(JobRunShell.java:202) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1164) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:634)
Auflösung resolution
Wenn jemand mit dieser Situation konfrontiert ist, besteht die wahrscheinlich schnellste Möglichkeit, dieses Problem zu lösen, darin, die im Repository enthaltenen Indexdaten zu löschen und den beschädigten Index neu zu indizieren.
HINWEIS: Für diese Beispiele ist die Neuindizierung eine zeit- und ressourcenintensive Aktion. Wir verwenden den "workflowDataLucene"
Löschen der Indexdaten:
Die Indexdaten befinden sich im Repository unter /oak:index/workflowDataLucene als ausgeblendete Knoten. Um den beschädigten Index zu löschen, müssen Sie daher:
- Kopieren Sie die Indexdefinition (nur ) an einen neuen Speicherort.
- Löschen Sie die gesamte
/oak:index/workflowDataLuceneKnotenstruktur. /oak:index/workflowDataLuceneneu erstellen und Neuindizierung auslösen.
Workaround:
Als Problemumgehung können Sie den Index deaktivieren und einen neuen Index mit derselben Definition erstellen, anstatt ihn zu löschen:
- Erstellen Sie einen neuen Index mit derselben Indexdefinition wie der beschädigte Index.
- Neuindizierung des Triggers auf dem neuen Index
- Deaktivieren Sie den beschädigten Index, indem Sie die Typeigenschaft in „Deaktiviert“ ändern.
Sobald diese Änderungen vorgenommen wurden, wird jede Abfrage an den neuen Index gesendet
Löschen Sie die Daten aus RDB:
Als letztes Mittel und wenn Sie auf "RDBmk" ausführen, können Sie analysieren, um die Indexdaten direkt aus der Datenbank zu löschen, indem Sie eine Abfrage wie die folgende durchführen:
DELETE FROM NODES WHEREID = '2:/oak:index/workflowDataLucene' OR ID LIKE '3:/oak:index/workflowDataLucene/%' OR ID LIKE '4:/oak:index/workflowDataLucene/%' OR ID LIKE '5:/oak:index/workflowDataLucene/%' OR ID LIKE OR ID LIKE OR ID LIKE '8:/oak:index/workflowDataLucene/%' OR ID LIKE '9:/oak:index/workflowDataLucene/%' '6:/oak:index/workflowDataLucene/%' '7:/oak:index/workflowDataLucene/%' OR OR ID LIKEID LIKE '10:/oak:index/workflowDataLucene/%' '5:p/oak:index/workflowDataLucene/%' OR ID LIKE '6:p/oak:index/workflowDataLucene/%' OR ID LIKE '7:p/oak:index/workflowDataLucene/%' OR ID LIKE '8:p/oak:index/workflowDataLucene/%' OR ID LIKE '9:p/oak:index/workflowDataLucene/%' OR ID LIKE '10:p/oak:index/workflowDataLucene/%' OR ID LIKE '11:p/oak:index/workflowDataLucene/%' OR ID LIKE '12:p/oak:index/workflowDataLucene/%' OR
Wenn Sie sich für diesen Pfad entscheiden, überprüfen Sie die Abfrage, bevor Sie sie ausführen, da sie möglicherweise einige Änderungen erfordert
HINWEIS: AEM muss heruntergefahren werden und lokale persistente Cache- und Indexdateien (< crx-quickstart> /repository/cache und < crx-quickstart> /repository/index) müssen gelöscht werden, bevor AEM nach diesem Löschvorgang gestartet wird.