cancel
Showing results for 
Search instead for 
Did you mean: 

Problema nel FULL REINDEXING

maverik
Champ in-the-making
Champ in-the-making
Ho riscontrato il seguente problema nella reindicizzazione del repository inserendo "index.recovery.mode=FULL" nell'alfresco grlobal properties ottengo la seguente eccezione:



 ERROR [index.AbstractReindexComponent.threads] Reindexer    18 failed with error: Node without parents does not have root aspect: workspace://SpacesStore/6854ca2f-56c2-4aed-8741-56f70fd0ffc5.
16:06:47,856  WARN  [index.AbstractReindexComponent.threads] java.lang.RuntimeException: Node without parents does not have root aspect: workspace://SpacesStore/6854ca2f-56c2-4aed-8741-56f70fd0ffc5
   at org.alfresco.repo.domain.node.AbstractNodeDAOImpl.prependPaths(AbstractNodeDAOImpl.java:2801)
   at org.alfresco.repo.domain.node.AbstractNodeDAOImpl.getPaths(AbstractNodeDAOImpl.java:2689)
   at org.alfresco.repo.node.db.DbNodeServiceImpl.getPaths(DbNodeServiceImpl.java:1988)
   at sun.reflect.GeneratedMethodAccessor247.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
   at org.alfresco.repo.tenant.MultiTNodeServiceInterceptor.invoke(MultiTNodeServiceInterceptor.java:104)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
   at $Proxy7.getPaths(Unknown Source)
   at sun.reflect.GeneratedMethodAccessor247.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.alfresco.repo.service.StoreRedirectorProxyFactory$RedirectorInvocationHandler.invoke(StoreRedirectorProxyFactory.java:215)
   at $Proxy8.getPaths(Unknown Source)
   at org.alfresco.repo.search.impl.lucene.ADMLuceneIndexerImpl.createDocumentsImpl(ADMLuceneIndexerImpl.java:599)
   at org.alfresco.repo.search.impl.lucene.ADMLuceneIndexerImpl.createDocuments(ADMLuceneIndexerImpl.java:585)
   at org.alfresco.repo.search.impl.lucene.AbstractLuceneIndexerImpl.indexImpl(AbstractLuceneIndexerImpl.java:663)
   at org.alfresco.repo.search.impl.lucene.AbstractLuceneIndexerImpl.indexImpl(AbstractLuceneIndexerImpl.java:688)
   at org.alfresco.repo.search.impl.lucene.AbstractLuceneIndexerImpl.flushPending(AbstractLuceneIndexerImpl.java:844)
   at org.alfresco.repo.search.impl.lucene.ADMLuceneIndexerImpl.doPrepare(ADMLuceneIndexerImpl.java:1668)
   at org.alfresco.repo.search.impl.lucene.AbstractLuceneIndexerImpl.prepare(AbstractLuceneIndexerImpl.java:469)
   at org.alfresco.repo.search.impl.lucene.AbstractLuceneIndexerAndSearcherFactory.prepare(AbstractLuceneIndexerAndSearcherFactory.java:805)
   at org.alfresco.repo.transaction.AlfrescoTransactionSupport$TransactionSynchronizationImpl.beforeCommit(AlfrescoTransactionSupport.java:683)
   at org.springframework.transaction.support.TransactionSynchronizationUtils.triggerBeforeCommit(TransactionSynchronizationUtils.java:95)
   at org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerBeforeCommit(AbstractPlatformTransactionManager.java:927)
   at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:737)
   at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723)
   at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:394)
   at org.alfresco.util.transaction.SpringAwareUserTransaction.commit(SpringAwareUserTransaction.java:472)
   at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:403)
   at org.alfresco.repo.node.index.AbstractReindexComponent$ReindexWorkerRunnable.run(AbstractReindexComponent.java:832)
   at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
   at java.lang.Thread.run(Thread.java:619)

Alla fine l'indicizzazione finisce ma viene creato un indice inconsistente.
4 REPLIES 4

openpj
Elite Collaborator
Elite Collaborator
Esistono per qualche motivo dei nodi nel repository che sono orfani, vuol dire che non hanno nessuna associazione padre-figlio in cui sono coinvolti, questo non dovrebbe mai succedere…  Smiley Indifferent

Prima di procedere con quanto ti ho scritto quì, ti suggerisco di fare un bel backup di tutto  :!:

Per poter identificare i nodi puoi eseguire la seguente query:
select * from alf_child_assoc asoc where asoc.parent_node_id IN(select an.id from alf_node an where an.NODE_DELETED = '0' and an.id NOT IN(SELECT root_node_id from alf_store) and an.id NOT IN(SELECT child_node_id from alf_child_assoc));
Se esistono dei risultati da questa query, dovresti rimuovere tutti i figli e le associazioni con i padri settando l'attributo node_deleted al valore "1", in questo modo:

update alf_node an set an.NODE_DELETED = '1' where an.ID IN (select an.id from alf_node an where an.NODE_DELETED = '0' and an.id NOT IN(SELECT root_node_id from alf_store) and an.id NOT IN(SELECT child_node_id from alf_child_assoc));
Se ancora non dovesse andare, molto probabilmente hai dei problemi con la doclib e quindi probabilmente dovresti rimuovere tutti i nodi con acl_id=NULL, tipicamente sono i nodi relativi ai thumbnails, ma attualmente non ho la delete sotto mano, ma credo che nel caso te la possa cavare guardando le altre query che ho postato.

Spero ti possa aiutare a risolvere  Smiley Wink

maverik
Champ in-the-making
Champ in-the-making
La query mi torna vuota… e neanche con la questione delle acl_id riesco a risolvere.

maverik
Champ in-the-making
Champ in-the-making
Ho trovato la procedura corretta su questo post del forum inglese:

https://forums.alfresco.com/en/viewtopic.php?f=8&t=36133

Grazie mille.

maverik
Champ in-the-making
Champ in-the-making
Una modifica sulla query per estrarre gli oggetti orfani:

select an.* from alf_node an where an.NODE_DELETED = 0
and
(
an.id NOT IN(SELECT root_node_id from alf_store) and an.id NOT IN(SELECT child_node_id from alf_child_assoc)
);

Per il node_deleted non ci vogliono le ' '.