Problema

La herramienta Oak-run es útil cuando observa un error 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

A diferencia de la interfaz de usuario /system/console/repositorycheck, la herramienta Oak-run comprueba los archivos de índice Lucene ocultos en /oak: índice, además de en el resto de las rutas de contenido.  Esta herramienta le da la opción de restaurar los archivos de índice al almacén de datos o solo reconstruir los índices corruptos, en lugar de reindexar todos ellos como se documenta aquí.

Entorno

AEM 6.4/Oak 1.8.8 y versiones posteriores

Pasos

  1. Ejecute el siguiente comando (pero cambie las rutas al almacén de segmentos y al almacén de datos para que coincidan con su entorno):

    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. El comando generará una comprobación de coherencia del almacén de datos.

  3. Usando el resultado, siga el artículo para restaurar o corregir los archivos que faltan.

También se puede utilizar el control de coherencia de DataStore para enumerar todas las referencias Blob en el almacén de nodos y todos los identificadores de Blob disponibles en el almacén de datos. Utilice el siguiente comando:

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

Proporcione una o varias de las siguientes opciones disponibles:

--id: enumera todos los ID del almacén de datos.
--ref: enumera todas las referencias de Blob en el almacén de nodos.
--consistency: enumera todos los Blobs que faltan con un control de coherencia.

Las siguientes opciones son opcionales:

--store: ruta al almacén de segmentos de mongo uri (obligatorio para las opciones --ref y --consistency de arriba).
--dump: ruta de acceso donde deben quedar los archivos (opcional). De lo contrario, los archivos se descargan en el directorio TMP de usuario.
--s3ds: ruta al archivo de configuración S3DataStore
--fds: ruta al archivo de configuración FileDataStore (la propiedad «ruta» es obligatoria)
--track: ruta a la carpeta principal del repositorio local (opcional). Coloca una copia de los identificadores Blob descargados para hacerles un seguimiento.