Problema: Error al obtener InputStream para blobld

Tiene configurado un FileDataStore en Adobe Experience Manager 6.x/Oak 1.x y el archivo error.log ve “Ocurrió un error al obtener InputStream para blobld”.

10.09.2015 10:38:04.220 *ERROR* [pool-9-thread-3] org.apache.sling.commons.scheduler.impl.QuartzScheduler Exception during job execution of org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate@7fe7e8fa : Error occurred while obtaining InputStream for blobId [add1dd8fc5093b27b1fae1b753cb48b24ef3231f#101983]
java.lang.RuntimeException: Error occurred while obtaining InputStream for blobId [add1dd8fc5093b27b1fae1b753cb48b24ef3231f#101983]

Soluciones

Este error significa que es posible que le falten archivos en el directorio del almacén de datos de Adobe Experience Manager.  La pérdida de archivos del almacén de datos puede deberse a un fallo de la colección de residuos de Oak Blob, a una interrupción del espacio en disco, al disco o a la inestabilidad de red compartida.  O bien, podría deberse a que un usuario ha eliminado los archivos del servidor por error.

Para recuperar los archivos que faltan, siga los pasos que se indican a continuación.

1. Instale el CFP/SP más reciente.

Puede encontrar las últimas correcciones en el uso compartido de paquetes de Adobe.

2. Ejecute la comprobación de coherencia del almacén de datos

Utilice Oak-run jar 1.6.6 o superior. Ejecute el siguiente comando: 

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/datastore --dump temp --verbose --track

3. Cree una lista de rutas de los archivos que faltan

El siguiente paso para recuperar los archivos que faltan consiste en compilar una lista completa de las rutas de los archivos que faltan.

1. Busque el resultado de comprobación de coherencia para todas las incidencias de error Registro no encontrado.

a. En Linux o Unix: utilice este comando para generar la lista de archivos que faltan en un archivo missing_ds_files.txt:

grep "blobId" consistency_check_output.txt | grep -Eo "[0-9a-f]{40,200}" | awk '{ print substr($1, 0,2) "/" substr($1, 3,2) "/" substr($1, 5,2) "/" $1 }' | sort -u > missing_ds_files.txt

** Si su instancia de Adobe Experience Manager no se está iniciando debido a los errores blobId, busque en sus archivos de registro en crx-quickstart/logs todas las incidencias del error Ocurrió un error al obtener InputStream para blobld:

grep "Error occurred while obtaining InputStream for blobId" error.log* | grep -Eo "[0-9a-f]{40,200}" | awk '{ print substr($1, 0,2) "/" substr($1, 3,2) "/" substr($1, 5,2) "/" $1 }' | sort -u > missing_ds_files.txt

Si el comando funcionó correctamente, entonces el contenido de missing_ds_files.txt sería similar al siguiente:

12/92/04/129204a6dd0ce2cd5ca19c721b6f52ee2b3630e2
9f/d8/38/9fd8386d20cf55e7e0024e18d0c7d4e8400454ee
7a/13/15/7a1315788f45dafd6630454f04183601682a9f80
28/37/d2/2837d24aed3ff223cd40e90222226c4ef2e2a0c6

  b. En Windows: utilice un editor de texto, como Textpad o Notepad++, para encontrar todas las incidencias de Registro no encontrado.  Luego, después de encontrar todas estas incidencias, extraiga los nombres de archivo usando una macro, escribiendo un script o copiando y creando manualmente los nombres de archivo en un nuevo archivo de texto.

Las rutas de archivo del almacén de datos se generan a partir del nombre del registro en este formato:
{primeros dos caracteres del ID de registro}/{segundos dos caracteres del ID de registro}/{terceros dos caracteres del ID de registro}/{ID de registro}

Por ejemplo, en este error:

java.lang.RuntimeException: Error occurred while obtaining InputStream for blobId [add1dd8fc5093b27b1fae1b753cb48b24ef3231f#101983]

el ID de registro es add1dd8fc5093b27b1fae1b753cb48b24ef3231f y la ruta del archivo es ad/d1/dd/add1dd8fc5093b27b1fae1b753cb48b24ef3231f

4. Recupere los archivos que faltan

Ahora, utilice el resultado del último paso para buscar los mismos archivos en otras instancias de Adobe Experience Manager en su entorno.  Puesto que los archivos del almacén de datos se almacenan de forma única, puede copiarlos en su entorno desde otras instancias de Adobe Experience Manager.

Si no puede encontrar algunos de los archivos en otras instancias, busque las copias de seguridad y restablézcalas desde allí si es posible.

En Linux, puede iniciar sesión en cada una de las instancias en funcionamiento de Adobe Experience Manager y utilizar un comando como rsync para copiar cualquiera de los archivos que faltan en ellas.  Por ejemplo, si lo ejecuta desde el directorio del almacén de datos en el servidor que tiene los archivos que faltan:

rsync -avR --files-from=missing_ds_files.txt . user@hostname-of-server-missing-files:/path/to/crx-quickstart/repository/repository/datastore/

El comando ejecuta un rsync que copia todos los archivos enumerados en missing_ds_files.txt que existen en el servidor. 

5. Corrija las referencias de archivos irrecuperables

Si no ha podido recuperar algunos de los archivos de la copia de seguridad o de otras instancias de Adobe Experience Manager, corrija las referencias incorrectas del almacén de datos.  Vuelva a ejecutar la comprobación de coherencia del almacén de datos, tal y como lo hicimos en el paso 4.  Obtendrá una lista actual de archivos que faltan.

Revise todas las rutas de nodos enumeradas que hacen referencia a los archivos que faltan en el almacén de datos.  Revise los recursos DAM que faltan o los archivos subidos a las páginas con su usuario.  Pídales que vuelvan a cargar aquellos que falten y necesiten.  Cualquier elemento que no necesite se puede eliminar de forma segura a través de la interfaz de usuario de Adobe Experience Manager.  Si falta algo en /var/audit o /var/eventing, se puede borrar de forma segura.  En cuanto a los archivos de los que no esté seguro, vaya aquí y póngase en contacto con el equipo de soporte técnico de AEM para obtener ayuda.

6. Reindexe todos los índices asíncronos de Oak

Debido al modelo de indexación asíncrono de Oak, podrían faltar archivos relacionados con los índices asíncronos de Oak.  Esos archivos que faltan no se informarían en la comprobación de coherencia, ya que están ocultos de los cruces de los repositorios.  Desafortunadamente, estos archivos no coinciden en las diferentes instancias de AEM, por lo que la única forma de corregir estas incoherencias es reindexando todos los índices asíncronos de Oak.

Reindexar los índices asíncronos:

1. Descargue la versión de Oak-run 1.0.x que coincida con la que tiene instalada en su entorno de Oak: https://repo1.maven.org/maven2/org/apache/jackrabbit/oak-run/

2. Cargue Oak-run en el servidor de Adobe Experience Manager.

3. Detenga todas las instancias de Adobe Experience Manager.

4. Ejecute el siguiente comando, correspondiente al almacenamiento Oak de su instancia de Adobe Experience Manager:

Comando TarMK:

java -Xmx4096m -jar /apps/staging/oak-run-*-*.jar checkpoints crx-quickstart/repository/segmentstore rm-all

Comando MongoMK:

java -Xmx4096m -jar oak-run-*-*.jar checkpoints mongodb://localhost/aem-author rm-all

5. Inicie Adobe Experience Manager de nuevo y supervise los archivos de registro para obtener mensajes de registro informativos de org.apache.jackrabbit.oak.plugins.index.  Si desea obtener más detalles sobre la indexación, vaya a la interfaz de usuario de /system/console/slinglog y habilite el registro de nivel de depuración para org.apache.jackrabbit.oak.plugins.index.

Debería ver mensajes de registro como los siguientes:

23.06.2015 14:26:23.070 *INFO* [FelixStartLevel] org.apache.jackrabbit.oak.plugins.index.IndexUpdate Reindexing will be performed for following indexes: [/oak:index/cqAcUUID, /oak:index/nodetype, /oak:index/deviceIdentificationMode, /oak:index/campaignpath, /oak:index/active, /oak:index/jcrFrozenMixinTypes]

23.06.2015 14:26:23.517 *INFO* [FelixStartLevel] org.apache.jackrabbit.oak.plugins.index.IndexUpdate Reindexing Traversed #10000 /jcr:system/jcr:versionStorage/c8/5f
...
23.06.2015 14:28:51.999 *INFO* [pool-8-thread-1] org.apache.jackrabbit.oak.plugins.index.IndexUpdate Indexing report
    - /oak:index/counter*(708)
    - /oak:index/authorizables*(159)
    - /oak:index/cqPageLucene*(1913)
    - /oak:index/ntBaseLucene*(444)
    - /oak:index/cqTagLucene*(512)
    - /oak:index/workflowDataLucene*(116)
...

23.06.2015 14:28:52.009 *INFO* [pool-8-thread-1] org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate Reindexing (async) completed for indexes: [/oak:index/counter*(708), /oak:index/authorizables*(159), /oak:index/cqPageLucene*(1913), /oak:index/ntBaseLucene*(444), /oak:index/cqTagLucene*(512), /oak:index/workflowDataLucene*(116)] in 30.36 s

6. Si por algún motivo la indexación falla, verá este mensaje de error repitiéndose en bucle:

23.06.2015 14:26:23.070 *INFO* [FelixStartLevel] org.apache.jackrabbit.oak.plugins.index.IndexUpdate Reindexing will be performed for following indexes: [/oak:index/cqAcUUID, /oak:index/nodetype, /oak:index/deviceIdentificationMode, /oak:index/campaignpath, /oak:index/active, /oak:index/jcrFrozenMixinTypes]

Se aplica a

AEM6.x/Oak 1.x

Esta obra está autorizada con arreglo a la licencia de Reconocimiento-NoComercial-CompartirIgual 3.0 Unported de Creative Commons.  Los términos de Creative Commons no cubren las publicaciones en Twitter™ y Facebook.

Avisos legales   |   Política de privacidad en línea