cancel
Showing results for 
Search instead for 
Did you mean: 

Problem with creating many users

dooman
Champ in-the-making
Champ in-the-making
Hi!

I need import many users from excel file to alfresco. I use Java API and have some problems. I have over 3000 users to import. 400-500 users import fine, but after I have the next exception:


[#|2011-05-11T16:29:23.058+0400|INFO|glassfish3.1|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=59;_ThreadName=Thread-1;|16:29:23,056 User:admin ERROR [lucene.index.IndexInf
] Channel reopen failed on index info files in: C:\Alfresco\alf_data\lucene-indexes\user\alfrescoUserStore
java.nio.channels.ClosedByInterruptException
        at java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:184)
        at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:762)
        at org.alfresco.repo.search.impl.lucene.index.IndexInfo.writeStatusToFile(IndexInfo.java:2358)
        at org.alfresco.repo.search.impl.lucene.index.IndexInfo.writeStatus(IndexInfo.java:2347)
        at org.alfresco.repo.search.impl.lucene.index.IndexInfo.access$800(IndexInfo.java:139)
        at org.alfresco.repo.search.impl.lucene.index.IndexInfo$PreparedTransition.transition(IndexInfo.java:1608)
        at org.alfresco.repo.search.impl.lucene.index.IndexInfo$8.doWork(IndexInfo.java:1422)
        at org.alfresco.repo.search.impl.lucene.index.IndexInfo.doWithFileLock(IndexInfo.java:2554)
        at org.alfresco.repo.search.impl.lucene.index.IndexInfo.doWithFileLock(IndexInfo.java:2582)
        at org.alfresco.repo.search.impl.lucene.index.IndexInfo.doWithFileLock(IndexInfo.java:2582)
        at org.alfresco.repo.search.impl.lucene.index.IndexInfo.doWithFileLock(IndexInfo.java:2582)
        at org.alfresco.repo.search.impl.lucene.index.IndexInfo.doWithFileLock(IndexInfo.java:2582)
        at org.alfresco.repo.search.impl.lucene.index.IndexInfo.doWithFileLock(IndexInfo.java:2582)
        at org.alfresco.repo.search.impl.lucene.index.IndexInfo.doWithFileLock(IndexInfo.java:2474)
        at org.alfresco.repo.search.impl.lucene.index.IndexInfo.setStatus(IndexInfo.java:1413)
        at org.alfresco.repo.search.impl.lucene.AbstractLuceneBase.setStatus(AbstractLuceneBase.java:261)
        at org.alfresco.repo.search.impl.lucene.AbstractLuceneIndexerImpl.prepare(AbstractLuceneIndexerImpl.java:471)
        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.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:117)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
        at $Proxy358.createUser(Unknown Source)
        at ru.korusconsulting.dms.server.vocabularies.UserVocabularyImporter.importPerson(UserVocabularyImporter.java:55)
        at ru.korusconsulting.dms.server.vocabularies.UserVocabularyImporter.doImport(UserVocabularyImporter.java:41)
        at ru.korusconsulting.dms.server.vocabularies.AbstractExcelVocabularyImporter.doImport(AbstractExcelVocabularyImporter.java:53)
        at ru.korusconsulting.dms.VocabularyComponent$1.doWork(VocabularyComponent.java:516)
        at org.alfresco.repo.security.authentication.AuthenticationUtil.runAs(AuthenticationUtil.java:508)
        at ru.korusconsulting.dms.VocabularyComponent.initCategories(VocabularyComponent.java:465)
        at ru.korusconsulting.dms.VocabularyComponent.onApplicationEvent(VocabularyComponent.java:459)
        at ru.korusconsulting.dms.VocabularyComponent.onApplicationEvent(VocabularyComponent.java:51)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:97)
        at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:294)
        at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:858)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:419)
        at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:443)
        at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:459)
        at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:340)
        at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:307)
        at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127)
        at javax.servlet.GenericServlet.init(GenericServlet.java:244)
        at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1439)
        at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1241)
        at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5032)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:5319)
        at com.sun.enterprise.web.WebModule.start(WebModule.java:500)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:917)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:901)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:755)
        ….

I create every user in standalone transation, all users import in one thread. What is cause of this problem?

I use alfresco 3.4.e running on Windows server 2008 with -Xmx8192m
2 REPLIES 2

dooman
Champ in-the-making
Champ in-the-making
UPD: If I import all users in one transaction, then all works fine. But what happening if I will have many transactions on production?

code, that I use for create new user:

            Map<QName, Serializable> personProperties = new HashMap<QName, Serializable>();
            personProperties.put(ContentModel.PROP_FIRSTNAME, person.getFirstName());
            personProperties.put(ContentModel.PROP_LASTNAME, person.getLastName());
            personProperties.put(PROP_MIDDLENAME, person.getMiddleName());

            personService.createPerson(personProperties);

            authenticationService.createAuthentication(person.getLogin(), DEFAULT_PASSWORD.toCharArray());

dooman
Champ in-the-making
Champ in-the-making
Ohhhh..I'm soryy that's all my mistake. Glassfish interrupts execution after 15 minutes. I move import users task in separate thread and now all works fine