Corregir incoherencias en el repositorio cuando SegmentNotFound se notificaba en AEM 6.x

Descripción

Entorno
Adobe Experience Manager 6.x

Problema/Síntomas
Observado SegmentNotFound Excepciones en los registros. Ejemplo:

  1. *ERROR* FelixStartLevel org.apache.sling.event org.apache.sling.event.impl.jobs.queue.QueueManager(1431) El método activate ha generado una excepción (org.apache.jackrabbit.oak.plugins.segment.SegmentNotFoundException: Segmento da5bcb95-d00a-4c04-a9d9-0f10f2b14e5e no encontrado)

  2. **ERROR* pool-6-thread-3 org.apache.sling.commons.scheduler.impl.QuartzScheduler Excepción durante la ejecución del trabajo org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate@1dc173f9 : No se encuentra el segmento e669f30b-e886-4b7a-b161-56432601ec6b

    org.apache.jackrabbit.oak.plugins.segment.SegmentNotFoundException: No se encuentra el segmento e669f30b-e886-4b7a-b161-56432601ec6b*

Resolución

Ejecute una comprobación de consistencia en el repositorio y encuentre el último estado correcto de revisión y vuelva a él. Siga estos pasos:

  1. Descargue una versión de oak-run que coincida con su versión del núcleo de Oak desde https://mvnrepository.com/artifact/org.apache.jackrabbit/oak-run

  2. Para revertir un almacén de segmentos dañado a su estado correcto más reciente, cambie al directorio de trabajo de CQ (el que contiene la carpeta crx-quickstartfolder) y haga una copia de seguridad de todos los archivos en ./crx-quickstart/repository/segmentstore/.

  3. Realice la comprobación de consistencia,

    java -Xmx6000m -jar oak-run-*.jar check --bin=-1 /path/to/crx-quickstart/repository/segmentstore

    Esto busca hacia atrás en las revisiones hasta que encuentra una consistente:

    Busque un mensaje como el de abajo:

    principal INFO o.a.j.o.p.s.f.t.ConsistencyChecker - Se encontró la última corrección correcta afdb922d-ba53-4a1b-aa1b-1cb044b535cf:234880

  4. Revierta el repositorio a esta revisión editándolo ./crx-quickstart/repository/segmentstore/journal.log y borrar todas las líneas después de la línea que contiene la última corrección correcta.

  5. Eliminar todo .archivos /crx-quickstart/repository/segmentstore/*.bak.

  6. Ejecute la limpieza de puntos de comprobación para eliminar los puntos de comprobación huérfanos:

    java -Xmx6000m -jar oak-run-*.jar checkpoints /path/to/crx-quickstart/repository/segmentstore rm-unreferenced

  7. Finalmente, compacte el repositorio:

    java -Xmx6000m -jar oak-run-*.jar compact /path/to/crx-quickstart/repository/segmentstore/

Causa
Debido a algunos problemas antiguos en Oak o a algunas incoherencias en el repositorio, puede que falte un segmento y el repositorio pueda ser incoherente.

En esta página