Uploaded image for project: 'Sakai'
  1. Sakai
  2. SAK-42954

Messages - Error on log: optimistic locking failed

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: OPEN
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 12.8 [Tentative], 19.4, 20.0, 21.0 [Tentative]
    • Fix Version/s: None
    • Component/s: Messages Tool
    • Labels:
      None
    • 20 status:
      Please Merge
    • 19 status:
      Please Merge
    • 12 status:
      Please Merge
    • Test Plan:
      Hide
      1. Send a message to many users
      2. Enter to the message detail with two or more users. Both users read the message at the same time (and it is marked as read).
      3. An error in log is shown. Users can't access to the message detail first time but they don't see any error (page is reload)
      Show
      Send a message to many users Enter to the message detail with two or more users. Both users read the message at the same time (and it is marked as read). An error in log is shown. Users can't access to the message detail first time but they don't see any error (page is reload)

      Description

      We have detected in our sakai that this error occurs sometimes

      06-nov-2019 16:49:32.759 ERROR [ajp-nio-8014-exec-23] com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute #{PrivateMessagesTool.processPvtMsgDetail}: javax.faces.el.EvaluationException: org.springframework.orm.hibernate4.HibernateOptimisticLockingFailureException: Object of class [org.sakaiproject.component.app.messageforums.dao.hibernate.PrivateMessageImpl] with identifier [4389768]: optimistic locking failed; nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) : [org.sakaiproject.component.app.messageforums.dao.hibernate.PrivateMessageImpl#4389768]
      javax.faces.FacesException: #{PrivateMessagesTool.processPvtMsgDetail}: javax.faces.el.EvaluationException: org.springframework.orm.hibernate4.HibernateOptimisticLockingFailureException: Object of class [org.sakaiproject.component.app.messageforums.dao.hibernate.PrivateMessageImpl] with identifier [4389768]: optimistic locking failed; nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) : [org.sakaiproject.component.app.messageforums.dao.hibernate.PrivateMessageImpl#4389768]
      	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:98)
      	at javax.faces.component.UICommand.broadcast(UICommand.java:332)
      	at javax.faces.component.UIData.broadcast(UIData.java:677)
      	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:287)
      	at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:327)
      	at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:99)
      	at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:245)
      	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:110)
      	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:213)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
      	at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:418)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
      	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
      	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:728)
      	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:470)
      	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:395)
      	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:316)
      	at org.sakaiproject.tool.messageforums.MessageForumsFilePickerServlet.dispatch(MessageForumsFilePickerServlet.java:172)
      	at org.sakaiproject.jsf.util.JsfTool.doPost(JsfTool.java:258)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
      	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:728)
      	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:470)
      	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:356)
      	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:316)
      	at org.sakaiproject.tool.impl.ActiveToolComponent$MyActiveTool.help(ActiveToolComponent.java:583)
      	at org.sakaiproject.tool.messageforums.MessageForumsFilePickerServlet.sendToHelper(MessageForumsFilePickerServlet.java:272)
      	at org.sakaiproject.tool.messageforums.MessageForumsFilePickerServlet.dispatch(MessageForumsFilePickerServlet.java:83)
      	at org.sakaiproject.jsf.util.JsfTool.doPost(JsfTool.java:258)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
      	at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:418)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
      	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:728)
      	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:470)
      	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:356)
      	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:316)
      	at org.sakaiproject.tool.impl.ActiveToolComponent$MyActiveTool.forward(ActiveToolComponent.java:513)
      	at org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(SkinnableCharonPortal.java:1487)
      	at org.sakaiproject.portal.charon.handlers.SiteHandler.doToolBuffer(SiteHandler.java:1236)
      	at org.sakaiproject.portal.charon.handlers.SiteHandler.bufferContent(SiteHandler.java:1070)
      	at org.sakaiproject.portal.charon.handlers.SiteHandler.doSite(SiteHandler.java:499)
      	at org.sakaiproject.portal.charon.handlers.SiteHandler.doGet(SiteHandler.java:271)
      	at org.sakaiproject.portal.charon.handlers.SiteHandler.doGet(SiteHandler.java:155)
      	at org.sakaiproject.portal.charon.handlers.WorksiteHandler.doPost(WorksiteHandler.java:69)
      	at org.sakaiproject.portal.charon.SkinnableCharonPortal.doPost(SkinnableCharonPortal.java:1171)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
      	at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:467)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
      	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
      	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
      	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
      	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496)
      	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
      	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
      	at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:677)
      	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
      	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
      	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
      	at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:479)
      	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
      	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)
      	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1468)
      	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
      	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
      	at java.lang.Thread.run(Thread.java:748)
      Caused by: javax.faces.el.EvaluationException: org.springframework.orm.hibernate4.HibernateOptimisticLockingFailureException: Object of class [org.sakaiproject.component.app.messageforums.dao.hibernate.PrivateMessageImpl] with identifier [4389768]: optimistic locking failed; nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) : [org.sakaiproject.component.app.messageforums.dao.hibernate.PrivateMessageImpl#4389768]
      	at com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:150)
      	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:92)
      	... 82 more
      Caused by: org.springframework.orm.hibernate4.HibernateOptimisticLockingFailureException: Object of class [org.sakaiproject.component.app.messageforums.dao.hibernate.PrivateMessageImpl] with identifier [4389768]: optimistic locking failed; nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) : [org.sakaiproject.component.app.messageforums.dao.hibernate.PrivateMessageImpl#4389768]
      	at org.springframework.orm.hibernate4.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:202)
      	at org.springframework.orm.hibernate4.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:730)
      	at org.springframework.orm.hibernate4.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:592)
      	at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:761)
      	at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:730)
      	at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:518)
      	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:292)
      	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
      	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
      	at com.sun.proxy.$Proxy175.markMessageAsReadForUser(Unknown Source)
      	at org.sakaiproject.tool.messageforums.PrivateMessagesTool.processPvtMsgDetail(PrivateMessagesTool.java:1544)
      	at sun.reflect.GeneratedMethodAccessor3366.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:146)
      	... 83 more
      Caused by: org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) : [org.sakaiproject.component.app.messageforums.dao.hibernate.PrivateMessageImpl#4389768]
      	at org.hibernate.persister.entity.AbstractEntityPersister.check(AbstractEntityPersister.java:2541)
      	at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3285)
      	at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:3183)
      	at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3525)
      	at org.hibernate.action.internal.EntityUpdateAction.execute(EntityUpdateAction.java:159)
      	at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:465)
      	at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:351)
      	at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:350)
      	at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:56)
      	at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1258)
      	at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:425)
      	at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
      	at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:177)
      	at org.springframework.orm.hibernate4.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:584)
      	... 96 more 

        Gliffy Diagrams

          Zeplin

            Attachments

              Issue Links

                Activity

                  People

                  • Assignee:
                    Unassigned
                    Reporter:
                    victor.gomollon Victor Gomollon Martos
                  • Votes:
                    0 Vote for this issue
                    Watchers:
                    3 Start watching this issue

                    Dates

                    • Created:
                      Updated:

                      Git Integration