Liferay en cluster - Concurrence import LDAP
Liferay en cluster - Concurrence import LDAP
https://liferay.dev/en/c/message_boards/find_thread?p_l_id=119785333&threadId=118930074
2024-03-28T20:08:01Z
2024-03-28T20:08:01Z
Liferay en cluster - Concurrence import LDAP
SEBASTIEN PAYEN
https://liferay.dev/en/c/message_boards/find_message?p_l_id=119785333&messageId=118930073
2020-04-14T09:01:57Z
2020-04-14T09:01:57Z
Bonjour à tous,<br />J'ai mis en place un cluster Liferay avec 2 noeuds.Le cluster fonctionne très bien, l'index est bien partagé et le cache également.Par contre, j'importe les utilisateurs depuis un LDAP et je constate des accès concurrentiels entre les 2 noeuds du cluster lors de l'import LDAP.J'ai des logs comme ceux-ci :2020-03-31 09:48:37.539 ERROR [liferay/scheduled_user_ldap_import-2][LDAPUserImporterImpl:1193] Unable to import user 192602<br />com.liferay.portal.kernel.exception.SystemException: com.liferay.portal.kernel.dao.orm.ORMException: {"agreedToTermsOfUse":false,"comments":"","companyId":"10157","contactId":"192603","createDate":1584016317263,"defaultUser":false,"emailAddress":"","emailAddressVerified":true,"externalReferenceCode":"","facebookId":"0","failedLoginAttempts":0,"firstName":"Jean-Michel","googleUserId":"","graceLoginCount":0,"greeting":"Welcome Jean-Michel XXXXXX!","jobTitle":"","languageId":"en_US","lastFailedLoginDate":null,"lastLoginDate":null,"lastLoginIP":"","lastName":"XXXXXX","ldapServerId":"0","lockout":false,"lockoutDate":null,"loginDate":null,"loginIP":"","middleName":"","modifiedDate":1585312742000,"mvccVersion":"5432","openId":"","portraitId":"0","reminderQueryAnswer":"","reminderQueryQuestion":"","screenName":"XXXXXX","status":0,"timeZoneId":"Europe\/Paris","userId":"192602","uuid":"851340e6-5d06-2929-17eb-aa12cf6c4b78"} is stale in comparison to {"agreedToTermsOfUse":false,"comments":"","companyId":"10157","contactId":"192603","createDate":1584016317263,"defaultUser":false,"emailAddress":"","emailAddressVerified":true,"externalReferenceCode":"","facebookId":"0","failedLoginAttempts":0,"firstName":"Jean-Michel","googleUserId":"","graceLoginCount":0,"greeting":"Welcome Jean-Michel XXXXXX!","jobTitle":"","languageId":"en_US","lastFailedLoginDate":null,"lastLoginDate":null,"lastLoginIP":"","lastName":"XXXXXX","ldapServerId":"0","lockout":false,"lockoutDate":null,"loginDate":null,"loginIP":"","middleName":"","modifiedDate":1585647596743,"mvccVersion":"5434","openId":"","portraitId":"0","reminderQueryAnswer":"","reminderQueryQuestion":"","screenName":"XXXXXX","status":0,"timeZoneId":"Europe\/Paris","userId":"192602","uuid":"851340e6-5d06-2929-17eb-aa12cf6c4b78"}<br />   at com.liferay.portal.kernel.service.persistence.impl.BasePersistenceImpl.processException(BasePersistenceImpl.java:446)<br />   at com.liferay.portal.service.persistence.impl.UserPersistenceImpl.updateImpl(UserPersistenceImpl.java:8650)<br />   at com.liferay.portal.service.persistence.impl.UserPersistenceImpl.updateImpl(UserPersistenceImpl.java:79)<br />   at com.liferay.portal.kernel.service.persistence.impl.BasePersistenceImpl.update(BasePersistenceImpl.java:544)<br />   at com.liferay.portal.kernel.service.persistence.impl.BasePersistenceImpl.update(BasePersistenceImpl.java:563)<br />   at com.liferay.portal.service.impl.UserLocalServiceImpl.updateUser(UserLocalServiceImpl.java:5186)<br />   at sun.reflect.GeneratedMethodAccessor456.invoke(Unknown Source)<br />   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br />   at java.lang.reflect.Method.invoke(Method.java:497)<br />   at com.liferay.portal.kernel.bean.ClassLoaderBeanHandler.invoke(ClassLoaderBeanHandler.java:66)<br />   at com.sun.proxy.$Proxy684.updateUser(Unknown Source)<br />   at com.liferay.portal.kernel.service.UserLocalServiceWrapper.updateUser(UserLocalServiceWrapper.java:3463)<br />   at com.liferay.message.boards.internal.service.MBMessageUserLocalServiceWrapper.updateUser(MBMessageUserLocalServiceWrapper.java:71)<br />   at sun.reflect.GeneratedMethodAccessor456.invoke(Unknown Source)<br />   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br />   at java.lang.reflect.Method.invoke(Method.java:497)<br />   at com.liferay.portal.kernel.bean.ClassLoaderBeanHandler.invoke(ClassLoaderBeanHandler.java:66)<br />   at com.sun.proxy.$Proxy685.updateUser(Unknown Source)<br />   at sun.reflect.GeneratedMethodAccessor456.invoke(Unknown Source)<br />   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br />   at java.lang.reflect.Method.invoke(Method.java:497)<br />   at com.liferay.portal.spring.aop.AopMethodInvocationImpl.proceed(AopMethodInvocationImpl.java:50)<br />   at com.liferay.portal.spring.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:69)<br />   at com.liferay.portal.spring.aop.AopMethodInvocationImpl.proceed(AopMethodInvocationImpl.java:57)<br />   at com.liferay.portal.service.ServiceContextAdvice.invoke(ServiceContextAdvice.java:60)<br />   at com.liferay.portal.spring.aop.AopMethodInvocationImpl.proceed(AopMethodInvocationImpl.java:57)<br />   at com.liferay.portal.spring.aop.AopInvocationHandler.invoke(AopInvocationHandler.java:49)<br />   at com.sun.proxy.$Proxy39.updateUser(Unknown Source)<br />   at com.liferay.portal.security.ldap.internal.exportimport.LDAPUserImporterImpl.updateUser(LDAPUserImporterImpl.java:1727)<br />   at com.liferay.portal.security.ldap.internal.exportimport.LDAPUserImporterImpl.importUser(LDAPUserImporterImpl.java:1168)<br />   at com.liferay.portal.security.ldap.internal.exportimport.LDAPUserImporterImpl.importFromLDAPByUser(LDAPUserImporterImpl.java:883)<br />   at com.liferay.portal.security.ldap.internal.exportimport.LDAPUserImporterImpl.importUsers(LDAPUserImporterImpl.java:535)<br />   at com.liferay.portal.security.ldap.internal.exportimport.LDAPUserImporterImpl.importUsers(LDAPUserImporterImpl.java:461)<br />   at com.liferay.portal.security.ldap.internal.configuration.persistence.listener.UserImportMessageListener.doReceive(UserImportMessageListener.java:136)<br />   at com.liferay.portal.kernel.messaging.BaseMessageListener.receive(BaseMessageListener.java:26)<br />   at com.liferay.portal.kernel.scheduler.messaging.SchedulerEventMessageListenerWrapper._processMessage(SchedulerEventMessageListenerWrapper.java:127)<br />   at com.liferay.portal.kernel.scheduler.messaging.SchedulerEventMessageListenerWrapper.receive(SchedulerEventMessageListenerWrapper.java:98)<br />   at com.liferay.portal.kernel.messaging.InvokerMessageListener.receive(InvokerMessageListener.java:74)<br />   at com.liferay.portal.messaging.internal.SerialDestination$1.run(SerialDestination.java:60)<br />   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)<br />   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)<br />   at java.lang.Thread.run(Thread.java:745)<br />Caused by: com.liferay.portal.kernel.dao.orm.ORMException: {"agreedToTermsOfUse":false,"comments":"","companyId":"10157","contactId":"192603","createDate":1584016317263,"defaultUser":false,"emailAddress":"","emailAddressVerified":true,"externalReferenceCode":"","facebookId":"0","failedLoginAttempts":0,"firstName":"Jean-Michel","googleUserId":"","graceLoginCount":0,"greeting":"Welcome Jean-Michel XXXXXX!","jobTitle":"","languageId":"en_US","lastFailedLoginDate":null,"lastLoginDate":null,"lastLoginIP":"","lastName":"XXXXXX","ldapServerId":"0","lockout":false,"lockoutDate":null,"loginDate":null,"loginIP":"","middleName":"","modifiedDate":1585312742000,"mvccVersion":"5432","openId":"","portraitId":"0","reminderQueryAnswer":"","reminderQueryQuestion":"","screenName":"XXXXXX","status":0,"timeZoneId":"Europe\/Paris","userId":"192602","uuid":"851340e6-5d06-2929-17eb-aa12cf6c4b78"} is stale in comparison to {"agreedToTermsOfUse":false,"comments":"","companyId":"10157","contactId":"192603","createDate":1584016317263,"defaultUser":false,"emailAddress":"","emailAddressVerified":true,"externalReferenceCode":"","facebookId":"0","failedLoginAttempts":0,"firstName":"Jean-Michel","googleUserId":"","graceLoginCount":0,"greeting":"Welcome Jean-Michel XXXXXX!","jobTitle":"","languageId":"en_US","lastFailedLoginDate":null,"lastLoginDate":null,"lastLoginIP":"","lastName":"XXXXXX","ldapServerId":"0","lockout":false,"lockoutDate":null,"loginDate":null,"loginIP":"","middleName":"","modifiedDate":1585647596743,"mvccVersion":"5434","openId":"","portraitId":"0","reminderQueryAnswer":"","reminderQueryQuestion":"","screenName":"XXXXXX","status":0,"timeZoneId":"Europe\/Paris","userId":"192602","uuid":"851340e6-5d06-2929-17eb-aa12cf6c4b78"}<br />   at com.liferay.portal.dao.orm.hibernate.ExceptionTranslator.translate(ExceptionTranslator.java:67)<br />   at com.liferay.portal.dao.orm.hibernate.SessionImpl.merge(SessionImpl.java:244)<br />   at com.liferay.portal.service.persistence.impl.UserPersistenceImpl.updateImpl(UserPersistenceImpl.java:8646)<br />   ... 40 more<br />Caused by: org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [com.liferay.portal.model.impl.UserImpl#192602]<br />   at org.hibernate.event.def.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:485)<br />   at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:255)<br />   at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:84)<br />   at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:867)<br />   at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:851)<br />   at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:855)<br />   at com.liferay.portal.dao.orm.hibernate.SessionImpl.merge(SessionImpl.java:241)<br />   ... 41 more<br /><br />Est-ce que quelqu'un a déjà rencontré ce problème et si oui, comment l'avez-vous solutionner ?<br /><br />Merci d'avance pour vos rÃ