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.
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.
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.
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.