Details
Description
While editing visit clinical record items if yoy try and delete a entry and save the visit you receive the message "Failed to save Visit. It may have been changed by another user.". The visit is definitely not being used by any other user (tested in single user environment with same result).
The exception generated is:
07 Dec 2008 20:55:02,125 ERROR ErrorHelper,http-8080-Processor16:127 - Failed to save Visit. It may have been changed by another user.
Failed to save act.patientClinicalEvent.1.0:4335123:2cc61fee-c412-11dd-a625-63dd64fb4f76
org.openvpms.component.business.service.archetype.ArchetypeServiceException: Failed to save object Act[id=4335123,archetypeId=act.patientClinicalEvent.1.0,linkId=2cc61fee-c412-11dd-a625-63dd64fb4f76,version=1,name=Visit,title=<null>,activityStartTime=Sun Dec 07 20:54:55 EST 2008,activityEndTime=<null>,reason=<null>,status=IN_PROGRESS,participations=[Participation[id=7747510,archetypeId=participation.location.1.0,linkId=2cc61fef-c412-11dd-a625-63dd64fb4f76,version=2,name=<null>], Participation[id=7747511,archetypeId=participation.patient.1.0,linkId=2cc61fed-c412-11dd-a625-63dd64fb4f76,version=2,name=<null>], Participation[id=7747509,archetypeId=participation.clinician.1.0,linkId=2cc890f0-c412-11dd-a625-63dd64fb4f76,version=2,name=<null>]],sourceActRelationships=[],targetActRelationships=[]]
at org.openvpms.component.business.service.archetype.ArchetypeService.save(ArchetypeService.java:540)
at sun.reflect.GeneratedMethodAccessor322.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:292)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:163)
at $Proxy1.save(Unknown Source)
at sun.reflect.GeneratedMethodAccessor322.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:292)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:155)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:122)
at org.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:80)
at org.openvpms.component.business.service.security.OpenVPMSMethodSecurityInterceptor.invoke(OpenVPMSMethodSecurityInterceptor.java:54)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:174)
at $Proxy2.save(Unknown Source)
at org.openvpms.component.business.service.archetype.rule.ArchetypeRuleService$1.run(ArchetypeRuleService.java:308)
at org.openvpms.component.business.service.archetype.rule.ArchetypeRuleService$4.doInTransaction(ArchetypeRuleService.java:507)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:114)
at org.openvpms.component.business.service.archetype.rule.ArchetypeRuleService.execute(ArchetypeRuleService.java:504)
at org.openvpms.component.business.service.archetype.rule.ArchetypeRuleService.save(ArchetypeRuleService.java:306)
at org.openvpms.component.business.service.archetype.rule.ArchetypeRuleService.save(ArchetypeRuleService.java:276)
at org.openvpms.web.component.im.edit.SaveHelper.save(SaveHelper.java:95)
at org.openvpms.web.component.im.edit.SaveHelper.save(SaveHelper.java:82)
at org.openvpms.web.component.im.edit.AbstractIMObjectEditor.saveObject(AbstractIMObjectEditor.java:497)
at org.openvpms.web.component.im.edit.AbstractIMObjectEditor.doSave(AbstractIMObjectEditor.java:485)
at org.openvpms.web.component.im.edit.AbstractIMObjectEditor.save(AbstractIMObjectEditor.java:271)
at org.openvpms.web.component.im.edit.SaveHelper$1.doInTransaction(SaveHelper.java:58)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:114)
at org.openvpms.web.component.im.edit.SaveHelper.save(SaveHelper.java:56)
at org.openvpms.web.component.im.edit.EditDialog.save(EditDialog.java:175)
at org.openvpms.web.component.im.edit.EditDialog.onOK(EditDialog.java:150)
at org.openvpms.web.component.dialog.PopupDialog.onButton(PopupDialog.java:199)
at org.openvpms.web.component.dialog.PopupDialog$2.actionPerformed(PopupDialog.java:305)
at nextapp.echo2.app.button.AbstractButton.fireActionPerformed(AbstractButton.java:135)
at echopointng.ButtonEx$1.actionPerformed(ButtonEx.java:120)
at nextapp.echo2.app.button.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:70)
at echopointng.model.DefaultButtonModelEx.doAction(DefaultButtonModelEx.java:51)
at echopointng.ButtonEx.processInput(ButtonEx.java:202)
at nextapp.echo2.app.update.ClientUpdateManager.process(ClientUpdateManager.java:116)
at nextapp.echo2.app.update.UpdateManager.processClientUpdates(UpdateManager.java:89)
at nextapp.echo2.webcontainer.ContainerSynchronizeService.renderUpdate(ContainerSynchronizeService.java:472)
at nextapp.echo2.webrender.service.SynchronizeService.service(SynchronizeService.java:279)
at nextapp.echo2.webrender.WebRenderServlet.process(WebRenderServlet.java:273)
at org.openvpms.web.servlet.SpringWebContainerServlet.process(SpringWebContainerServlet.java:148)
at nextapp.echo2.webrender.WebRenderServlet.doPost(WebRenderServlet.java:189)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:292)
at org.openvpms.web.servlet.SkipLoginFilter.doFilter(SkipLoginFilter.java:111)
at org.openvpms.web.servlet.SkipLoginFilter.doFilter(SkipLoginFilter.java:71)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:303)
at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:108)
at org.acegisecurity.intercept.web.SecurityEnforcementFilter.doFilter(SecurityEnforcementFilter.java:197)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:303)
at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:143)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:303)
at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:246)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:303)
at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:220)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:303)
at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:173)
at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:120)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)
Caused by: org.openvpms.component.business.dao.im.common.IMObjectDAOException: Failed to save IMObject 4,335,123
at org.openvpms.component.business.dao.hibernate.im.IMObjectDAOHibernate.save(IMObjectDAOHibernate.java:162)
at org.openvpms.component.business.service.archetype.ArchetypeService.save(ArchetypeService.java:533)
... 80 more
Caused by: org.springframework.orm.hibernate3.HibernateOptimisticLockingFailureException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): org.openvpms.component.business.dao.hibernate.im.act.ActDOImpl#4335123; nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): org.openvpms.component.business.dao.hibernate.im.act.ActDOImpl#4335123
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:645)
at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:413)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:363)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:331)
at org.openvpms.component.business.dao.hibernate.im.IMObjectDAOHibernate$7$1.doInHibernate(IMObjectDAOHibernate.java:1052)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:358)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:331)
at org.openvpms.component.business.dao.hibernate.im.IMObjectDAOHibernate$7.doInTransaction(IMObjectDAOHibernate.java:1048)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:114)
at org.openvpms.component.business.dao.hibernate.im.IMObjectDAOHibernate.update(IMObjectDAOHibernate.java:1046)
at org.openvpms.component.business.dao.hibernate.im.IMObjectDAOHibernate.save(IMObjectDAOHibernate.java:154)
... 81 more
Caused by: org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): org.openvpms.component.business.dao.hibernate.im.act.ActDOImpl#4335123
at org.openvpms.component.business.dao.hibernate.im.common.DOState.<init>(DOState.java:103)
at org.openvpms.component.business.dao.hibernate.im.common.IMObjectAssembler.assemble(IMObjectAssembler.java:95)
at org.openvpms.component.business.dao.hibernate.im.common.CompoundAssembler.assemble(CompoundAssembler.java:130)
at org.openvpms.component.business.dao.hibernate.im.IMObjectDAOHibernate.save(IMObjectDAOHibernate.java:848)
at org.openvpms.component.business.dao.hibernate.im.IMObjectDAOHibernate.save(IMObjectDAOHibernate.java:832)
at org.openvpms.component.business.dao.hibernate.im.IMObjectDAOHibernate.access$000(IMObjectDAOHibernate.java:89)
at org.openvpms.component.business.dao.hibernate.im.IMObjectDAOHibernate$1.doInHibernate(IMObjectDAOHibernate.java:157)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:358)
... 89 more
Fixed in vpms, revision 3159