Gli errori si verificano quando si esegue un controllo di coerenza e si corregge il PersistenceManager.
Quando esegui un controllo di coerenza e si corregge il PersistenceManager, ottieni uno o più dei seguenti errori nel log. (È probabile che gli uuid differiscano da questi errori.)
- 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)
Oppure, quando stai reindicizzando l'indice di ricerca, con questo errore fallisce (con lo stesso uuid visualizzato):
NoSuchItemStateException: deadbeef-cafe-babe-cafe-babecafebabe.
Soluzione
Se il tuo problema corrisponde a quelli sopra elencati, allora il seguente processo ti aiuterà a risolvere la corruzione.
Fino a CRX 2.2 , utilizza la vecchia CRX Console:
- Arresta l'istanza CRX (la console CRX non funziona mentre CRX è in esecuzione)
- Potresti dover correggere lo script di avvio della Console. Per farlo, modifica server/console.sh e sostituisci la variabile REPOSITORY_HOME="$CONTEXT/crx" con REPOSITORY_HOME="$CONTEXT/../repository". (Considera che non puoi semplicemente aggiungere la riga all'inizio dello script, perché il CONTESTO potrebbe non essere impostato prima di quello facendo sì che la console utilizzi un repository diverso).
- Per CQ 5.3/CRX 2.x: copia server/lib/common/cq-shared-libs-5.3.4.jar in server/lib/container
- Per avviare la console CRX, in una finestra terminale, digita:
crx-quickstart/server./console.sh - Dopo che viene visualizzato il prompt della console, digita il seguente comando per accedere come amministratore:
login crx.default admin <pwd>
Correggi "ChildNode has invalid parent id"
Dalla console CRX, segui questi passaggi:
- Per esempio, se si è verificato questo errore:
ChildNode has invalid parent id: INVALID_PARENT_UUID (instead of EXPECTED_PARENT_UUID)
Esegui questo comando per ottenere una visualizzazione a basso livello del nodo madre "corretto":
stat EXPECTED_PARENT_UUID
Poi esegui una stat per ciascuno dei nodi figlio e verifica che il parentId sia EXPECTED_PARENT_UUID. - risolvi quelli che hanno l'id sbagliato usando il comando patch così:
patch -p EXPECTED_PARENT_UUID CHILD_UUID
Come risolvere "NodeState references inexistent child"
Dalla console CRX, segui questi passaggi:
- Per esempio, se si è verificato questo errore:
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 - Esegui questo comando per ottenere il percorso della voce NodeState
stat 4ee97820-2137-48e0-b664-f804c34eb24f - Utilizza il percorso che ha prodotto dal comando di cui sopra come argomento [path] per questo comando:
cd [path] - Esegui questi comandi per rimuovere il riferimento al nodo figlio mancante, salva e esci:
rm -c dd7e1f37-9480-4c40-af45-218db4c48190
save
exit - Se puoi permetterti tempo di inattività, esegui un controllo completo della coerenza dell'indice di ricerca e correggi per rimuovere il nodo orfano dall'indice di ricerca. Vedi questo articolo per sapere come fare. In caso contrario, procedi con le seguenti operazioni.
- Assicurati che il CRX si sia fermato in quel punto. Crea un file chiamato redo_X.log in crx-quickstart/repository/workspaces//index/ <workspace> dove la X nel nome del file corrisponde a ciò che si trova alla fine del nome del file crx-quickstart/repository/workspaces/<workspace>/index/indexes_X. Nel file inserisci quanto segue:
1 DEL dd7e1f37-9480-4c40-af45-218db4c48190
1 COM - Avvia CRX
- Se tutto è stato fatto correttamente allora dovresti vedere messaggi di log come questi nei tuoi logs/crx/error.log all'avvio di CRX:
*INFO * Recovery: Found uncommitted redo log. Applying changes now... (Recovery.java, line 82)
*INFO * Recovery: Redo changes applied. (Recovery.java, line 85)
Correggi "riferimento a uuid madre inesistente" e "ConsistencyCheck: Non riparabile: Nodo ... ha madre sconosciuta: ..."
Dalla console CRX, segui questi passaggi:
- Per esempio, se si è verificato questo errore:
NodeState '80b19738-b62b-4a6a-af9b-70f245d2a7bc' references inexistent parent uuid '9b353130-29f4-4825-8c20-03f3a8786e5a' - Esegui questi comandi per rimuovere il salvataggio del nodo figlio orfano e esci:
rm [80b19738-b62b-4a6a-af9b-70f245d2a7bc]
salva
esci - Se puoi permetterti tempo di inattività, esegui un controllo completo della coerenza dell'indice di ricerca e correggi per rimuovere il nodo orfano dall'indice di ricerca. Vedi questo articolo per vedere come fare. In caso contrario, procedi con le seguenti operazioni.
- Assicurati che il CRX si sia fermato in quel punto. Crea un file chiamato redo_X.log in crx-quickstart/repository/workspaces/<workspace>/index/ dove la X nel nome del file corrisponde a ciò che si trova alla fine del nome del file crx-quickstart/repository/workspaces/<workspace>/index/indexes_X. Nel file inserisci quanto segue:
1 DEL 80b19738-b62b-4a6a-af9b-70f245d2a7bc
1 COM - Avvia CRX
- Se tutto è stato fatto correttamente allora dovresti vedere messaggi di log come questi nei tuoi logs/crx/error.log all'avvio di CRX:
*INFO * Recovery: Found uncommitted redo log. Applica le modifiche adesso... (Recovery.java, line 82)
*INFO * Recovery: Ripristina le modifiche applicate. (Recovery.java, line 85)
Nota: Se ci sono molti errori da correggere, puoi preparare più elementi in questi passaggi:
Nel passaggio 4, apri un file di testo e prepara più comandi rm quindi incolla l'intero contenuto del file nella console CRX, per esempio:
rm [<child uuid 1>]
rm [<child uuid 2>]
save
exit
Nel passaggio 6, ci sono più elementi nel redo_X.log inserisci come sotto:
1 DEL <child uuid 1>
1 DEL <child uuid 2>
1 COM
Sostituisci il <child uuid 1> con gli uuid effettivi del nodo figlio nel messaggio di errore, come nell'esempio riportato sopra, questo sarebbe 80b19738-b62b-4a6a-af9b-70f245d2a7bc
Correggi "javax.jcr.ItemNotFoundException: non è riuscito a costruire il percorso di ... non ha una voce figlio per ..."
Dalla console CRX, segui questi passaggi:
- Per esempio, se si è verificato questo errore:
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 - Esegui questi comandi per eliminare il nodo figlio orfano, salvare e uscire dalla console crx
rm [46bbf932-3bd1-466d-bf93-7e0c99dc5707]
save
exit - Se puoi permetterti tempo di inattività, esegui un controllo completo della coerenza dell'indice di ricerca e correggi per rimuovere il nodo orfano dall'indice di ricerca. Vedi questo articolo per sapere come fare. In caso contrario, procedi con le seguenti operazioni.
- Assicurati che CRX sia fermo in quel momento. Crea un file chiamato redo_X.log sotto crx-quickstart/repository/workspaces/<workspace>/index/ dove la X nel nome del file corrisponde a ciò che si trova alla fine del nome del file crx-quickstart/repository/workspaces/<workspace>/index/indexes_X. Nel file inserisci quanto segue:
1 DEL 46bbf932-3bd1-466d-bf93-7e0c99dc5707
1 COM - Avvia CRX
- Se tutto è stato fatto correttamente allora dovresti vedere messaggi di log come questi nei tuoi logs/crx/error.log all'avvio di CRX:
*INFO * Recovery: Found uncommitted redo log. Applica le modifiche ora... (Recovery.java, line 82)
*INFO * Recovery: Ripristina le modifiche applicate. (Recovery.java, line 85)
Nota: Se ci sono molti errori da correggere, è possibile preparare più elementi in questi passaggi:
Nel passaggio 4, apri un file di testo e prepara più comandi rm quindi incolla l'intero contenuto del file nella console CRX, per esempio:
rm [<child uuid 1>]
rm [<child uuid 2>]
save
exit
Nel passaggio 6, ci sono più elementi nel redo_X.log inserisci come sotto:
1 DEL <child uuid 1>
1 DEL <child uuid 2>
1 COM
Sostituiresti il <child uuid 1> con gli uuidi effettivi del nodo figlio nel messaggio di errore, come nell'esempio riportato sopra, questo sarebbe 46bbf932-3bd1-466d-bf93-7e0c99dc5707
Come risolvere "NoSuchItemStateException: deadbeef-cafe-babe-cafe-babecafebabe"
Consulta questo articolo
Si applica a
CRX 1.4.x, CRX 2.x
Accedi al tuo account