Limite du répertoire lucene-index atteinte.

cancel
Showing results for 
Search instead for 
Did you mean: 
xfa18
Member II

Limite du répertoire lucene-index atteinte.

Bonjour,

Je vous expose notre problème pour savoir si des personnes l'ont déjà rencontré et qu'elle a été leur solution.
En premier lieu l'architecture : Le serveur Alfresco est un alfresco communautaire 2.1 installé sur un os Debain Lenny. La base de données est hébergé sur un serveur MySQL. Le système de fichiers est en ext3
Depuis hier nous rencontrons des problèmes pour créer/modifier/supprimer des fichiers ou des espaces de travail sur notre serveur.

org.alfresco.error.AlfrescoRuntimeException: Unknown Exception in Transaction.
        at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:292)
        at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:174)
        at org.alfresco.repo.webdav.WebDAVMethod.execute(WebDAVMethod.java:152)
        at org.alfresco.repo.webdav.WebDAVServlet.service(WebDAVServlet.java:129)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
        at org.alfresco.repo.webdav.auth.AuthenticationFilter.doFilter(AuthenticationFilter.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
        at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
        at java.lang.Thread.run(Thread.java:595)
Caused by: javax.transaction.RollbackException: Transaction didn't commit: Failed to prepare: requires rollback
        at org.alfresco.util.transaction.SpringAwareUserTransaction.commit(SpringAwareUserTransaction.java:430)
        at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:239)
        … 21 more
Caused by: org.alfresco.repo.search.IndexerException: Failed to prepare: requires rollback
        at org.alfresco.repo.search.impl.lucene.AbstractLuceneIndexerAndSearcherFactory.prepare(AbstractLuceneIndexerAndSearcherFactory.java:684)
        at org.alfresco.repo.transaction.AlfrescoTransactionSupport$TransactionSynchronizationImpl.beforeCommit(AlfrescoTransactionSupport.java:634)
        at org.springframework.transaction.support.TransactionSynchronizationUtils.triggerBeforeCommit(TransactionSynchronizationUtils.java:48)
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerBeforeCommit(AbstractPlatformTransactionManager.java:821)
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:637)
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:624)
        at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:307)
        at org.alfresco.util.transaction.SpringAwareUserTransaction.commit(SpringAwareUserTransaction.java:420)
        … 22 more
Caused by: org.alfresco.repo.search.IndexerException: Invalid state MARKED_ROLLBACK
        at org.alfresco.repo.search.impl.lucene.index.IndexInfo.getTransition(IndexInfo.java:1171)
        at org.alfresco.repo.search.impl.lucene.index.IndexInfo.setStatus(IndexInfo.java:1099)
        at org.alfresco.repo.search.impl.lucene.AbstractLuceneBase.setStatus(AbstractLuceneBase.java:256)
        at org.alfresco.repo.search.impl.lucene.AbstractLuceneIndexerImpl.setRollbackOnly(AbstractLuceneIndexerImpl.java:549)
        at org.alfresco.repo.search.impl.lucene.AbstractLuceneIndexerImpl.prepare(AbstractLuceneIndexerImpl.java:484)
        at org.alfresco.repo.search.impl.lucene.AbstractLuceneIndexerAndSearcherFactory.prepare(AbstractLuceneIndexerAndSearcherFactory.java:679)
        … 29 more
Après recherche et analyse de logs, le répertoire lucene-index contient 32000 sous répertoires. Nous avons donc atteint la limite du système.

D'après le forum, il faut mettre la reindexation à FULL et relancer Alfresco. Y-a-t-il des risques ? Des personnes ont-elles déjà effectuées cette manipulation sans problème (Nous avons 31 G0 de données) ?

Deuxième point, pour éviter ce problème dans l'avenir, quelles sont les solutions ? Peut-on séparer les indexes dans plusieurs répertoires ?

Merci de votre aide et de vos réponses.
3 Replies
rguinot
Customer

Re: Limite du répertoire lucene-index atteinte.

Vous pouvez tenter de les copier sur une partition ext4 qui permet d'aller jusqu'a 64000 sous-répertoires par défaut, et encore au delà avec une option dir_nlink si l'on en croit Wikipedia : http://en.wikipedia.org/wiki/Ext4

Cependant, cette limite n'est pas récursive à mon avis, donc il faudrait que vous ayez crée 32000 répertoires ou documents au sein du même répertoire.
Etant donné que les documents ( les .bin) sont uniquement dans les feuilles de l'arbre et si mes souvenirs sont bons, les feuilles sont les minutes, il faudrait avoir importé et indexé plus de 32000 documents dans la même minute ce qui me semble beaucoup.
xfa18
Member II

Re: Limite du répertoire lucene-index atteinte.

Bonjour,

Merci de votre réponse.
Le passage en ext4 me semble difficile pour le moment.

Sinon, lucene ne timestamp pas les répertoires. Il me semble que c'est le répertoire contentstore (celui qui contient les fichiers) qui a se comportement.

Je parle bien du répertoire alf_data/lucene-indexes.
Si ce répertoire doit avoir le même comportement que alf_data/contentstore, c'est que nous avons commis une erreur quelque part lors de l'installation.

Merci de votre aide.
xfa18
Member II

Re: Limite du répertoire lucene-index atteinte.

Bonjour,

Ne pouvant pas attendre plus longtemps, nous avons lancé la reindexation (index.recovery.mode) avec le paramètre FULL.
Apres 20 minutes, voici les logs
15:41:34,597 WARN  [remoting.rmi.RmiRegistryFactoryBean] Could not detect RMI registry - creating new one
15:41:44,430 INFO  [domain.schema.SchemaBootstrap] Schema managed by database dialect org.hibernate.dialect.MySQLInnoDBDialect.
15:41:49,274 INFO  [domain.schema.SchemaBootstrap] Aucune modification na �t� apport�e au sch�ma.                             
15:41:53,692 INFO  [node.index.FullIndexRecoveryComponent] R�cup�ration de lindex d�but�e : {0} transactions.                 
15:43:52,905 INFO  [node.index.FullIndexRecoveryComponent]      10 % achev�.
15:45:26,889 INFO  [node.index.FullIndexRecoveryComponent]      20 % achev�.
15:47:41,135 INFO  [node.index.FullIndexRecoveryComponent]      30 % achev�.
15:49:24,724 INFO  [node.index.FullIndexRecoveryComponent]      40 % achev�.
15:51:24,816 INFO  [node.index.FullIndexRecoveryComponent]      50 % achev�.
15:53:24,685 INFO  [node.index.FullIndexRecoveryComponent]      60 % achev�.
15:54:49,056 INFO  [node.index.FullIndexRecoveryComponent]      70 % achev�.
15:56:18,282 INFO  [node.index.FullIndexRecoveryComponent]      80 % achev�.
15:58:36,649 INFO  [node.index.FullIndexRecoveryComponent]      90 % achev�.
16:00:24,562 INFO  [node.index.FullIndexRecoveryComponent]      100 % achev�.
16:00:24,572 INFO  [node.index.FullIndexRecoveryComponent] R�cup�ration de l'index achev�e.

Et puis plus rien. Si nous regardons dans alf_data, le répertoire "lucene-indexes" est bien recréé mais il reste vide (c'est à dire que dans alf_data/lucene-indexes/workspace/SpacesStore/ il n'y a pas les index). Si nous arretons Alfresco que nous repassons index.recovery.mode à Validate et que nous relancons Alfresco, nous avons cette erreur :

15:36:53,362 WARN  [remoting.rmi.RmiRegistryFactoryBean] Could not detect RMI registry - creating new one
15:36:59,535 INFO  [domain.schema.SchemaBootstrap] Schema managed by database dialect org.hibernate.dialect.MySQLInnoDBDialect.
15:37:02,058 INFO  [domain.schema.SchemaBootstrap] Aucune modification na �t� apport�e au sch�ma.                             
15:37:06,430 INFO  [repo.admin.ConfigurationChecker] The Alfresco root data directory ('dir.root') is: /opt/alfresco/alf_data 
15:37:06,502 ERROR [repo.admin.ConfigurationChecker] CONTENT INTEGRITY ERROR: Indexes not found for 5 stores.                 
15:37:06,502 INFO  [repo.admin.ConfigurationChecker] You may set 'index.recovery.mode=FULL' if you need to rebuild the indexes.
15:37:06,502 ERROR [repo.admin.ConfigurationChecker] Ensure that the 'dir.root' property is pointing to the correct data location.
15:37:06,524 ERROR [web.context.ContextLoader] Context initialization failed                                                     
org.alfresco.error.AlfrescoRuntimeException: Ensure that the 'dir.root' property is pointing to the correct data location.

Quelqu'un a une idée du problème ? La réindexation semble ne pas fonctionner ! :cry: