Issue
- The StaleObjectStateException is appearing in logs for RedirectNotFoundEntryImpl.
2022-02-08 05:36:36.385 ERROR [https-jsse-nio-8443-exec-157][I18nFilter:62] org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [com.liferay.redirect.model.impl.RedirectNotFoundEntryImpl#340010]
org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [com.liferay.redirect.model.impl.RedirectNotFoundEntryImpl#340010]
at org.hibernate.persister.entity.AbstractEntityPersister.check(AbstractEntityPersister.java:1950)
at org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:2711)
at org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:2912)
at org.hibernate.action.EntityDeleteAction.execute(EntityDeleteAction.java:97)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:265)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:189)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
at com.liferay.portal.dao.orm.hibernate.event.NestableFlushEventListener.onFlush(NestableFlushEventListener.java:61)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216)
at com.liferay.portal.spring.hibernate.PortletTransactionManager$TransactionStatusWrapper.reset(PortletTransactionManager.java:260)
at com.liferay.portal.spring.hibernate.PortletTransactionManager.commit(PortletTransactionManager.java:63)
at com.liferay.portal.spring.transaction.DefaultTransactionExecutor.commit(DefaultTransactionExecutor.java:41)
at com.liferay.portal.spring.transaction.TransactionInterceptor.invoke(TransactionInterceptor.java:77)
at com.liferay.portal.spring.aop.AopMethodInvocationImpl.proceed(AopMethodInvocationImpl.java:57)
at com.liferay.portal.kernel.aop.ChainableMethodAdvice.invoke(ChainableMethodAdvice.java:64)
at com.liferay.portal.spring.aop.AopMethodInvocationImpl.proceed(AopMethodInvocationImpl.java:57)
at com.liferay.change.tracking.internal.aop.CTTransactionAdvice.invoke(CTTransactionAdvice.java:80)
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.$Proxy1261.addOrUpdateRedirectNotFoundEntry(Unknown Source)
at com.liferay.friendly.url.internal.servlet.FriendlyURLServlet.getRedirect(FriendlyURLServlet.java:289)
at com.liferay.friendly.url.internal.servlet.FriendlyURLServlet.service(FriendlyURLServlet.java:396)
Environment
- Liferay DXP 7.3
Resolution
- The observed behavior is a known issue.
- If the hotfix is required for this issue, please create a support ticket requesting a hotfix by attaching patch details.
- Installing Fix Packs and Hotfixes on Liferay DXP will guide to installation of the hotfix in the respective environment.
Additional Information
- The issue normally occurs when the 1000th record is reached in the 'redirectnotfoundentry' table. It starts to delete records to create new ones and when there are multiple requests to delete the same record the race condition arose.
- LPS-137405