Corrigir inconsistências no repositório quando SegmentNotFound é relatado no AEM 6.x

Descrição

Ambiente
Adobe Experience Manager 6.x

Problema/Sintomas
Observado SegmentNotFound Exceções nos logs. Exemplo:

  1. *ERRO* FelixStartLevel org.apache.sling.event org.apache.sling.event.impl.jobs.queues.QueueManager(1431) O método de ativação lançou uma exceção (org.apache.jackrabbit.oak.plugins.segment.SegmentNotFoundException: Segmento da5bcb95-d00a-4c04-a9d9-0f10f2b14e5e não encontrado)

  2. **ERRO* pool-6-thread-3 org.apache.sling.commons.scheduler.impl.QuartzScheduler Exceção durante a execução do trabalho de org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate@1dc173f9 : Segmento e669f30b-e886-4b7a-b161-56432601ec6b não encontrado

    org.apache.jackrabbit.oak.plugins.segment.SegmentNotFoundException: Segmento e669f30b-e886-4b7a-b161-56432601ec6b não encontrado*

Resolução

Execute uma verificação de consistência no repositório e encontre o estado íntegro da última revisão e reverta para ele. Siga estas etapas:

  1. Baixe uma versão do oak-run que corresponda à sua versão principal do oak emhttps://mvnrepository.com/artifact/org.apache.jackrabbit/oak-run

  2. Para reverter um armazenamento de segmento corrompido para o estado correto mais recente, altere para o diretório de trabalho do CQ (aquele que contém a pasta crx-quickstart) e faça backup de todos os arquivos no ./crx-quickstart/repository/segmentstore/.

  3. Execute a verificação de consistência.

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

    Isso pesquisa para trás através das revisões até encontrar uma consistente:

    Procure uma mensagem como a abaixo:

    INFO principal o.a.j.o.p.s.f.t.ConsistencyChecker - foi encontrada a última revisão válida afdb922d-ba53-4a1b-aa1b-1cb044b535cf:234880

  4. Reverta o repositório para essa revisão ao editar ./crx-quickstart/repository/segmentstore/journal.log e excluir todas as linhas após a linha que contém a última revisão válida.

  5. Remover tudo ./crx-quickstart/repository/segmentstore/*.bak arquivos.

  6. Execute a limpeza de pontos de verificação para remover pontos de verificação órfãos:

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

  7. Por fim, compacte o repositório:

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

Causa
Devido a alguns problemas mais antigos no Oak ou a algumas inconsistências no repositório, um segmento pode ficar ausente e o repositório pode estar inconsistente.

Nesta página