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:
- Detener la instancia de CRX (la Consola CRX no funciona mientras CRX se está ejecutando)
- 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).
- Para CQ 5.3/CRX 2.x: copiar server/lib/common/cq-shared-libs-5.3.4.jar al server/lib/container
- Para iniciar la consola CRX, en una ventana de terminal, escribir:
crx-quickstart/server./console.sh - 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:
- 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 - Ejecutar este comando para obtener la ruta del ítem NodeState
stat 4ee97820-2137-48e0-b664-f804c34eb24f - Use la ruta que sale por el comando anterior como argumento [ruta] para este comando:
cd [path] - Ejecutar estos comandos para eliminar la referencia del nodo hijo que falta, guardar y salir:
rm -c dd7e1f37-9480-4c40-af45-218db4c48190
save
exit - 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.
- 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 - Iniciar CRX
- 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:
- Por ejemplo, si tuviera este error:
NodeState '80b19738-b62b-4a6a-af9b-70f245d2a7bc' references inexistent parent uuid '9b353130-29f4-4825-8c20-03f3a8786e5a' - Ejecute estos comandos para eliminar el nodo secundario huérfano, guarde y salga:
rm [80b19738-b62b-4a6a-af9b-70f245d2a7bc]
. - 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.
- 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 - Iniciar CRX
- 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:
- 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 - Ejecute estos comandos para borrar el nodo orphan child, guardar y salir de la consola crx
rm [46bbf932-3bd1-466d-bf93-7e0c99dc5707]
save
exit - 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.
- 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 - Iniciar CRX
- 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”
Ver este artículo
Se aplica a
CRX 1.4.x, CRX 2.x