Message Boards

LDAP Import concurrent access

SEBASTIEN PAYEN, modified 3 Years ago.

LDAP Import concurrent access

New Member Posts: 7 Join Date: 10/29/19 Recent Posts
Hello everybody,
I have a Liferay cluster with two nodes.Users are imported from a LDAP server and I noted concurrent access when updating users.Logs :2020-03-31 09:48:37.539 ERROR [liferay/scheduled_user_ldap_import-2][LDAPUserImporterImpl:1193] Unable to import user 192602
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"}
    at com.liferay.portal.kernel.service.persistence.impl.BasePersistenceImpl.processException(BasePersistenceImpl.java:446)
    at com.liferay.portal.service.persistence.impl.UserPersistenceImpl.updateImpl(UserPersistenceImpl.java:8650)
    at com.liferay.portal.service.persistence.impl.UserPersistenceImpl.updateImpl(UserPersistenceImpl.java:79)
    at com.liferay.portal.kernel.service.persistence.impl.BasePersistenceImpl.update(BasePersistenceImpl.java:544)
    at com.liferay.portal.kernel.service.persistence.impl.BasePersistenceImpl.update(BasePersistenceImpl.java:563)
    at com.liferay.portal.service.impl.UserLocalServiceImpl.updateUser(UserLocalServiceImpl.java:5186)
    at sun.reflect.GeneratedMethodAccessor456.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at com.liferay.portal.kernel.bean.ClassLoaderBeanHandler.invoke(ClassLoaderBeanHandler.java:66)
    at com.sun.proxy.$Proxy684.updateUser(Unknown Source)
    at com.liferay.portal.kernel.service.UserLocalServiceWrapper.updateUser(UserLocalServiceWrapper.java:3463)
    at com.liferay.message.boards.internal.service.MBMessageUserLocalServiceWrapper.updateUser(MBMessageUserLocalServiceWrapper.java:71)
    at sun.reflect.GeneratedMethodAccessor456.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at com.liferay.portal.kernel.bean.ClassLoaderBeanHandler.invoke(ClassLoaderBeanHandler.java:66)
    at com.sun.proxy.$Proxy685.updateUser(Unknown Source)
    at sun.reflect.GeneratedMethodAccessor456.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at com.liferay.portal.spring.aop.AopMethodInvocationImpl.proceed(AopMethodInvocationImpl.java:50)
    at com.liferay.portal.spring.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:69)
    at com.liferay.portal.spring.aop.AopMethodInvocationImpl.proceed(AopMethodInvocationImpl.java:57)
    at com.liferay.portal.service.ServiceContextAdvice.invoke(ServiceContextAdvice.java:60)
    at com.liferay.portal.spring.aop.AopMethodInvocationImpl.proceed(AopMethodInvocationImpl.java:57)
    at com.liferay.portal.spring.aop.AopInvocationHandler.invoke(AopInvocationHandler.java:49)
    at com.sun.proxy.$Proxy39.updateUser(Unknown Source)
    at com.liferay.portal.security.ldap.internal.exportimport.LDAPUserImporterImpl.updateUser(LDAPUserImporterImpl.java:1727)
    at com.liferay.portal.security.ldap.internal.exportimport.LDAPUserImporterImpl.importUser(LDAPUserImporterImpl.java:1168)
    at com.liferay.portal.security.ldap.internal.exportimport.LDAPUserImporterImpl.importFromLDAPByUser(LDAPUserImporterImpl.java:883)
    at com.liferay.portal.security.ldap.internal.exportimport.LDAPUserImporterImpl.importUsers(LDAPUserImporterImpl.java:535)
    at com.liferay.portal.security.ldap.internal.exportimport.LDAPUserImporterImpl.importUsers(LDAPUserImporterImpl.java:461)
    at com.liferay.portal.security.ldap.internal.configuration.persistence.listener.UserImportMessageListener.doReceive(UserImportMessageListener.java:136)
    at com.liferay.portal.kernel.messaging.BaseMessageListener.receive(BaseMessageListener.java:26)
    at com.liferay.portal.kernel.scheduler.messaging.SchedulerEventMessageListenerWrapper._processMessage(SchedulerEventMessageListenerWrapper.java:127)
    at com.liferay.portal.kernel.scheduler.messaging.SchedulerEventMessageListenerWrapper.receive(SchedulerEventMessageListenerWrapper.java:98)
    at com.liferay.portal.kernel.messaging.InvokerMessageListener.receive(InvokerMessageListener.java:74)
    at com.liferay.portal.messaging.internal.SerialDestination$1.run(SerialDestination.java:60)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
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"}
    at com.liferay.portal.dao.orm.hibernate.ExceptionTranslator.translate(ExceptionTranslator.java:67)
    at com.liferay.portal.dao.orm.hibernate.SessionImpl.merge(SessionImpl.java:244)
    at com.liferay.portal.service.persistence.impl.UserPersistenceImpl.updateImpl(UserPersistenceImpl.java:8646)
    ... 40 more
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]
    at org.hibernate.event.def.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:485)
    at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:255)
    at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:84)
    at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:867)
    at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:851)
    at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:855)
    at com.liferay.portal.dao.orm.hibernate.SessionImpl.merge(SessionImpl.java:241)
    ... 41 more
Did somebody already have this error and what did you do to solve it ?Thanks.
thumbnail
Christoph Rabel, modified 3 Years ago.

RE: LDAP Import concurrent access

Liferay Legend Posts: 1554 Join Date: 9/24/09 Recent Posts
Are you sure that the clustering works?
I have seen that error before and IMHO only when the clustering didn't work.
Testing clustering is a bit annoying since you can only do things like add a portlet to a page on server 1 and refresh that page on server 2. When clustering works, the portlet should be seen instantly.
But if I recall correctly somebody posted a blog post on liferay.dev a while ago about checking clustering.