Corregir la corrupción de repositorios usando la consola CRX

Los errores se producen cuando se ejecuta una comprobación consistente y se corrige en el PersistenceManager.

Cuando ejecuta una verificación de consistencia y fija en su PersistenceManager, obtiene uno o más de los siguientes errores en el registro. (Es probable que los uuids difieran de estos errores.)

  • ChildNode has invalid parent id: 651da1a9-fdbb-49ca-b908-8939d0fb7976 (instead of d3fb8c83-5453-421b-a862-245a4b243af2)
  • NodeState 4ee97820-2137-48e0-b664-f804c34eb24f references inexistent child {}node3_etc_workflow_instances_2009-09-22_delete_asset_497741622317431 with id dd7e1f37-9480-4c40-af45-218db4c48190
  • NodeState '80b19738-b62b-4a6a-af9b-70f245d2a7bc' references inexistent parent uuid '9b353130-29f4-4825-8c20-03f3a8786e5a'
  • javax.jcr.ItemNotFoundException: failed to build path of 46bbf932-3bd1-466d-bf93-7e0c99dc5707: ad09118a-45cb-422d-b201-e0cbc938ade7 has no child entry for 46bbf932-3bd1-466d-bf93-7e0c99dc5707
  • ConsistencyCheck: Not repairable: Node 918fea28-f6ab-42bc-aff4-008d073632db has unknown parent: 42d4bb3e-2107-4560-ad54-f309b0db02dc (ConsistencyCheck.java, line 116)

O, cuando está reindexando el índice de búsqueda, falla con este error (con el mismo uuid mostrado):

NoSuchItemStateException: deadbeef-cafe-babe-cafe-babecafebabe.

Solución

Si su problema coincide con uno de los anteriores, el siguiente proceso le ayudará a solucionar la corrupción.

Hasta CRX 2.2, utilice la antigua consola CRX:

  1. Detener la instancia de CRX (la Consola CRX no funciona mientras CRX se está ejecutando)
  2. Es posible que deba corregir el guión de inicio de la Consola. Para ello, editar server/console.sh, y reemplazar la variable REPOSITORY_HOME="$CONTEXT/crx" por REPOSITORY_HOME="$CONTEXT/../repository". (Tenga en cuenta que no puede simplemente añadir la línea a la parte superior del script, ya que el CONTEXTO no se puede establecer antes de lo que haría que la consola usara un repositorio diferente).
  3. Para CQ 5.3/CRX 2.x: copiar server/lib/common/cq-shared-libs-5.3.4.jar al server/lib/container
  4. Para iniciar la consola CRX, en una ventana de terminal, escribir:
    crx-quickstart/server./console.sh
  5. Después de que aparezca el símbolo de la consola, escribir el siguiente comando para iniciar sesión como admin:
    login crx.default admin <pwd>

Corrección de “ChildNode tiene un identificador primario no válido”

Desde la Consola CRX, seguir estos pasos:

  • Por ejemplo, si tuvieras este error:
    ChildNode has invalid parent id: INVALID_PARENT_UUID (instead of EXPECTED_PARENT_UUID)

    Ejecute este comando para obtener una vista de bajo nivel del nodo padre "correcto":
    stat EXPECTED_PARENT_UUID

    A continuación, ejecute un identificador estadístico para cada uno de los nodos hijos y compruebe que el parentId es EXPECTED_PARENT_UUID.
  • arregla los que tienen el id incorrecto usando el comando patch como este:
    patch -p EXPECTED_PARENT_UUID CHILD_UUID

Corregir “Referencias de NodeState inferior inexistente”

Desde la Consola CRX, seguir estos pasos:

  1. Por ejemplo, si tuvieras este error:
    NodeState 4ee97820-2137-48e0-b664-f804c34eb24f references inexistent child {}node3_etc_workflow_instances_2009-09-22_delete_asset_497741622317431 with id dd7e1f37-9480-4c40-af45-218db4c48190
  2. Ejecutar este comando para obtener la ruta del ítem NodeState
    stat 4ee97820-2137-48e0-b664-f804c34eb24f
  3. Use la ruta que sale por el comando anterior como argumento [ruta] para este comando:
    cd [path]
  4. Ejecutar estos comandos para eliminar la referencia del nodo hijo que falta, guardar y salir:
    rm -c dd7e1f37-9480-4c40-af45-218db4c48190
    save
    exit
  5. Si puede permitirse el tiempo de inactividad, realice una comprobación de coherencia del índice de búsqueda completo y elimine el nodo huérfano de su índice de búsqueda. Ver este artículo para ver cómo se hace esto. De lo contrario, continúe con los siguientes pasos.
  6. Asegúrese de que el CRX esté detenido en ese punto. Crear un archivo llamado redo_X.log en crx-quickstart/repository/workspaces/<workspace>/index/ donde la X en el nombre del archivo coincida con la que se encuentra al final del nombre del archivo crx-quickstart/repository/workspaces/<workspace>/index/indexes_X. En el fichero, introducir lo siguiente:
    1 DEL dd7e1f37-9480-4c40-af45-218db4c48190
    1 COM
  7. Iniciar CRX
  8. Si todo se hizo correctamente, debería ver mensajes de registro como estos en sus logs/crx/error.log al iniciar CRX:
    *INFO * Recovery: Found uncommitted redo log. Applying changes now... (Recovery.java, line 82)
    *INFO * Recovery: Redo changes applied. (Recovery.java, línea 85)

Corregir “referencias inexistentes uuid padre” y “ConsistencyCheck: No reparable: ... tiene un padre desconocido: ...”

Desde la Consola CRX, seguir estos pasos:

  1. Por ejemplo, si tuviera este error:
    NodeState '80b19738-b62b-4a6a-af9b-70f245d2a7bc' references inexistent parent uuid '9b353130-29f4-4825-8c20-03f3a8786e5a'
  2. Ejecute estos comandos para eliminar el nodo secundario huérfano, guarde y salga:
    rm [80b19738-b62b-4a6a-af9b-70f245d2a7bc]
    .
  3. Si puede permitirse el tiempo de inactividad, realice una comprobación de coherencia del índice de búsqueda completo y elimine el nodo huérfano de su índice de búsqueda. Ver este artículo para hacer esto. De lo contrario, continúe con los siguientes pasos.
  4. Asegúrese de que el CRX esté detenido en ese punto. Crear un archivo llamado redo_X.log en crx-quickstart/repository/workspaces/<workspace>/index/ donde la X del nombre del archivo coincida con la que se encuentra al final del nombre del archivo para el crx-quickstart/repository/workspaces/<workspace>/index/indexes_X. En el fichero, introducir lo siguiente:
    1 DEL 80b19738-b62b-4a6a-af9b-70f245d2a7bc
    1 COM
  5. Iniciar CRX
  6. Si todo se hizo correctamente, debería ver mensajes de registro como estos en sus logs/crx/error.log al iniciar CRX:
    *INFO * Recovery: Found uncommitted redo log. Aplicando los cambios ahora.... (Recovery.java, línea 82)
    *INFO * Recuperación: rehacer los cambios aplicados. (Recovery.java, línea 85)

 

Nota: Si tiene muchos errores que corregir, puede preparar varios elementos en estos pasos:

En el paso 4, abra un archivo de texto y prepare varios comandos rm y luego pegue todo el contenido del archivo en la consola CRX, por ejemplo:
rm [<child uuid 1>]
rm [<child uuid 2>]
save
exit

En el paso 6, tendrá varios elementos en el archivo redo_X.log, como se indica a continuación:
1 DEL <child uuid 1>
1 DEL <child uuid 2>
1 COM

Reemplazar el <child uuid 1> con los uuids reales del nodo inferior en el mensaje de error, como en el ejemplo dado arriba esto sería 80b19738-b62b-4a6a-af9b-70f245d2a7bc

Corregido “javax.jcr.ItemNotFoundException: failed to build path of ... has no child entry for ...”

Desde la Consola CRX, seguir estos pasos:

 

  1. Por ejemplo, si tuvo este error:
    javax.jcr.ItemNotFoundException: failed to build path of 46bbf932-3bd1-466d-bf93-7e0c99dc5707: ad09118a-45cb-422d-b201-e0cbc938ade7 has no child entry for 46bbf932-3bd1-466d-bf93-7e0c99dc5707
  2. Ejecute estos comandos para borrar el nodo orphan child, guardar y salir de la consola crx
    rm [46bbf932-3bd1-466d-bf93-7e0c99dc5707]
    save
    exit

  3. Si puede permitirse el tiempo de inactividad, realice una comprobación de coherencia del índice de búsqueda completo y elimine el nodo huérfano de su índice de búsqueda. Ver este artículo para saber cómo se hace esto. De lo contrario, continúe con los siguientes pasos.
  4. Crear un archivo llamado redo_X.log en crx-quickstart/repository/workspaces/<workspace>/index/ dónde X el nombre del archivo coincida con la que se encuentra al final del nombre del archivo crx-quickstart/repository/workspaces/<workspace>/index/indexes_X En el fichero, introducir lo siguiente:
    1 DEL 46bbf932-3bd1-466d-bf93-7e0c99dc5707
    1 COM
  5. Iniciar CRX
  6. Si todo se hizo correctamente, debería ver mensajes de registro como estos en sus logs/crx/error.log al iniciar CRX:
    *INFO * Recovery: Found uncommitted redo log. Aplicando los cambios ahora.... (Recovery.java, línea 82)
    *INFO * Recuperación: Rehacer los cambios aplicados. (Recovery.java, línea 85)

Nota: Si tiene muchos errores que corregir, puede preparar varios elementos en estos pasos:

En el paso 4, abrir un archivo de texto y prepare varios comandos rm y luego pegar todo el contenido del archivo en la consola CRX, por ejemplo:
rm [<child uuid 1>]
rm [<child uuid 2>]
save
exit

En el paso 6, tendrá varios elementos en el archivo redo_X.log, como se indica a continuación:
1 DEL <child uuid 1>
1 DEL <child uuid 2>
1 COM

Reemplazar el <child uuid 1> con los uuids reales del nodo inferior en el mensaje de error, como en el ejemplo dado arriba esto sería 46bbf932-3bd1-466d-bf93-7e0c99dc5707

Arreglar “NoSuchItemStateException: deadbeef-cafe-babe-cafe-babecafebabe”

Se aplica a

CRX 1.4.x, CRX 2.x

 Adobe

Obtén ayuda de forma más rápida y sencilla

¿Nuevo usuario?