Problema

A ferramenta oak-run é útil ao observar um erro como este:

09.11.2017 13:42:17.512 *WARN* [async-index-update-async] org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore Error occurred while loading bytes from steam while fetching for id 4089b47c7ba7ab8015859428e7e6965eec4641e3#241
java.util.concurrent.ExecutionException: java.io.IOException: org.apache.jackrabbit.core.data.DataStoreException: Record 4089b47c7ba7ab8015859428e7e6965eec4641e3 does not exist
Caused by: java.io.IOException: org.apache.jackrabbit.core.data.DataStoreException: Record 4089b47c7ba7ab8015859428e7e6965eec4641e3 does not exist

Diferentemente da interface /system/console/repositorycheck, a ferramenta de oak-run verifica os arquivos de índice do lucene ocultos em /oak: index, além dos caminhos de conteúdo restantes.  Essa ferramenta oferece a opção de restaurar arquivos de índice para o armazenamento de dados ou apenas reconstruir os índices que estão corrompidos, em vez de reindexar todos eles, conforme documentado aqui.

Ambiente

AEM 6.4 / Oak 1.8.8 e versões posteriores

Etapas

  1. Execute o comando abaixo (mas troque os caminhos para o armazenamento de segmentos e o armazenamento de dados para corresponder ao seu ambiente):

    java -jar oak-run-*.jar datastorecheck --consistency --ref --id --fds crx-quickstart/install/org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.config --repoHome crx-quickstart/repository --store crx-quickstart/repository/segmentstore --dump temp --verbose --track

  2. O comando geraria uma verificação de consistência do armazenamento de dados.

  3. Usando o resultado, siga o artigo para restaurar ou corrigir quaisquer arquivos ausentes.

O Verificador de consistência para o DataStore também pode ser usado para listar todas as referências de blob no armazenamento de nó e todas as IDs de blob disponíveis no armazenamento de dados. Use o seguinte comando:

$ java-jar oak-run-*.jar datastorecheck [--id] [--ref] [--consistency] \
[--store |] \
[--s3ds |--fds] \
[--dump] \
[--track]

Forneça uma ou mais destas opções disponíveis:

--id - Lista todas as IDs no armazenamento de dados.
--ref - Lista todas as referências de blob no armazenamento de nós.
--consistency - Lista todos os blobs ausentes fazendo uma verificação de consistência.

As seguintes opções são opcionais:

--store - Caminho para o armazenamento de segmentos do URI mongo (Obrigatório para as opções --ref e --consistency mencionadas acima).
--dump - Caminho onde os arquivos serão despejados (opcional). Caso contrário, os arquivos serão despejados no diretório tmp do usuário.
--s3ds - Caminho para o arquivo de configuração do S3DataStore.
--fds - Caminho para o arquivo de configuração FileDataStore (a propriedade 'path' é obrigatória).
--track - Caminho da pasta base do repositório local (Opcional). Ele coloca uma cópia dos IDs de blob baixados para serem rastreados.