Ocorrem erros ao executar uma verificação consistente e corrigir seu PersistenceManager.
Ao executar uma verificação de consistência e correção em seu PersistenceManager, você recebe um ou mais dos seguintes erros no log. (É provável que seus uuids sejam diferentes desses erros.)
- 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)
Ou, quando você está reindexando o índice de pesquisa, ele falha com esse erro (com o mesmo uuid exibido):
NoSuchItemStateException: deadbeef-cafe-babe-cafe-babecafebabe.
Solução
Se seu problema corresponder a um dos listados acima, o processo a seguir ajudará a corrigir a corrupção.
Até o CRX 2.2, use o antigo console CRX:
- Interrompa a instância do CRX (o console CRX não funciona durante a execução do CRX)
- Pode ser necessário corrigir o script de inicialização para o console. Para fazer isso, edite server/console.sh, e substitua a variável REPOSITORY_HOME="$CONTEXT/crx" com REPOSITORY_HOME="$CONTEXT/../repository". (Por favor, observe que não é possível adicionar a linha na parte superior do script, porque o CONTEXTO pode não ser definido antes, o que faria com que o console usasse um repositório diferente).
- Para CQ 5.3/CRX 2.x: copie server/lib/common/cq-shared-libs-5.3.4.jar to server/lib/container
- Para iniciar o console do CRX, em uma janela do terminal, digite:
crx-quickstart/server./console.sh - Depois que o prompt do console for exibido, digite o seguinte comando para fazer logon como administrador:
login crx.default admin <pwd>
Correção do erro "ChildNode has invalid parent id"
No console do CRX, siga estas etapas:
- Por exemplo, se esse erro foi gerado:
ChildNode has invalid parent id: INVALID_PARENT_UUID (instead of EXPECTED_PARENT_UUID)
Execute este comando para obter uma visão de baixo nível do nó primário "correto":
stat EXPECTED_PARENT_UUID
Em seguida, execute uma estatística para cada um dos nós secundários e verifique se o parentId é EXPECTED_PARENT_UUID. - Corrija os que têm id incorreta usando o comando patch como este:
patch -p EXPECTED_PARENT_UUID CHILD_UUID
Como corrigir o erro "NodeState references inexistent child"
No console do CRX, siga estas etapas:
- Por exemplo, se esse erro foi gerado:
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 - Execute este comando para obter o caminho do item NodeState
stat 4ee97820-2137-48e0-b664-f804c34eb24f - Use o caminho resultante do comando acima como o argumento [caminho] para este comando:
cd [path] - Execute estes comandos para remover a referência do nó secundário ausente, salve e saia:
rm -c dd7e1f37-9480-4c40-af45-218db4c48190
save
exit - Se tempo de inatividade for possível, execute uma verificação de consistência de índice de pesquisa completa e corrija para remover o nó órfão do seu índice de pesquisa. Consulte este artigo para ver como isso é feito. Caso contrário, continue com as etapas a seguir.
- Certifique-se de que o CRX está interrompido nesse ponto. Crie um arquivo chamado redo_X.log em crx-quickstart/repository/workspaces/<workspace>/index/ onde o X no nome do arquivo corresponde ao que está no final do nome do arquivo para o arquivo crx-quickstart/repository/workspaces/<workspace>/index/indexes_X. No arquivo, digite o seguinte:
1 DEL dd7e1f37-9480-4c40-af45-218db4c48190
1 COM - Iniciar CRX
- Se tudo tiver sido feito corretamente, você verá mensagens de log como estas em logs/crx/error.log na inicialização do CRX:
*INFO * Recovery: Found uncommitted redo log. Applying changes now... (Recovery.java, line 82)
*INFO * Recovery: Redo changes applied. (Recovery.java, line 85)
Corrigir "references inexistent parent uuid" e "ConsistencyCheck: Not repairable: Node ... has unknown parent: ..."
No console do CRX, siga estas etapas:
- Por exemplo, se você teve esse erro:
NodeState '80b19738-b62b-4a6a-af9b-70f245d2a7bc' references inexistent parent uuid '9b353130-29f4-4825-8c20-03f3a8786e5a' - Execute estes comandos para remover o salvamento do nó filho órfão e saia:
rm [80b19738-b62b-4a6a-af9b-70f245d2a7bc]
save
exit - Se tempo de inatividade for possível, execute uma verificação de consistência de índice de pesquisa completa e corrija para remover o nó órfão do seu índice de pesquisa. Veja este artigo sobre como isso é feito. Caso contrário, continue com as etapas a seguir.
- Certifique-se de que o CRX está interrompido nesse ponto. Crie um arquivo chamado redo_X.log em crx-quickstart/repository/workspaces/<workspace>/index/ onde o X no nome do arquivo corresponde ao que está no final do nome do arquivo para o crx-quickstart/repository/workspaces/<workspace>/index/indexes_X file. No arquivo, digite o seguinte:
1 DEL 80b19738-b62b-4a6a-af9b-70f245d2a7bc
1 COM - Iniciar CRX
- Se tudo foi feito corretamente, então você deve ver mensagens de log como estas em seu logs/crx/error.log na inicialização do CRX:
*INFO * Recovery: Found uncommitted redo log. Applying changes now... (Recovery.java, line 82)
*INFO * Recovery: Redo changes applied. (Recovery.java, line 85)
Observação: Se você tiver muitos erros para corrigir, poderá preparar vários itens nas seguintes etapas:
Na etapa 4, abra um arquivo de texto e prepare vários comandos rm e cole todo o conteúdo do arquivo no console do CRX, por exemplo:
rm [<child uuid 1>]
rm [<child uuid 2>]
save
exit
Na etapa 6, você teria vários itens no redo_X.log como abaixo:
1 DEL <child uuid 1>
1 DEL <child uuid 2>
1 COM
Você substituiria o <child uuid 1> pelos uuids atuais do nó filho na mensagem de erro, como no exemplo dado acima, isso seria 80b19738-b62b-4a6a-af9b-70f245d2a7bc
Corrigir "javax.jcr.ItemNotFoundException: failed to build path of ... has no child entry for ..."
No console do CRX, siga estas etapas:
- Por exemplo, se você teve esse erro:
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 - Execute estes comandos para excluir o nó filho órfão, salve e saia do console CRX
rm [46bbf932-3bd1-466d-bf93-7e0c99dc5707]
save
exit - Se tempo de inatividade for possível, execute uma verificação de consistência de índice de pesquisa completa e corrija para remover o nó órfão do seu índice de pesquisa. Consulte este artigo sobre como isso é feito. Caso contrário, continue com as etapas a seguir.
- Certifique-se de que o CRX está parado nesse ponto. Crie um arquivo chamado redo_X.log em crx-quickstart/repository/workspaces/<workspace>/index/ onde o X no nome do arquivo corresponde ao que está no final do nome do arquivo para o arquivo crx-quickstart/repository/workspaces/<workspace>/index/indexes_X. No arquivo, digite o seguinte:
1 DEL 46bbf932-3bd1-466d-bf93-7e0c99dc5707
1 COM - Iniciar CRX
- Se tudo foi feito corretamente, então você deve ver mensagens de log como estas em seu logs/crx/error.log na inicialização do CRX:
*INFO * Recovery: Found uncommitted redo log. Applying changes now... (Recovery.java, line 82)
*INFO * Recovery: Redo changes applied. (Recovery.java, line 85)
Observação: Se você tiver muitos erros para corrigir, poderá preparar vários itens nas seguintes etapas:
Na etapa 4, abra um arquivo de texto e prepare vários comandos rm e cole todo o conteúdo do arquivo no console do CRX, por exemplo:
rm [<child uuid 1>]
rm [<child uuid 2>]
save
exit
Na etapa 6, você teria vários itens no redo_X.log como abaixo:
1 DEL <child uuid 1>
1 DEL <child uuid 2>
1 COM
Você substituiria o <child uuid 1> pelos uuids atuais do nó filho na mensagem de erro, como no exemplo dado acima, isso seria 46bbf932-3bd1-466d-bf93-7e0c99dc5707
Como corrigir "NoSuchItemStateException: deadbeef-cafe-babe-cafe-babecafebabe"
Consulte este artigo
Aplica-se a
CRX 1.4.x, CRX 2.x