[
http://mifosforge.jira.com/browse/MIFOS-2903?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
keithwoodlock resolved MIFOS-2903.
----------------------------------
Resolution: Fixed
applied patch to 1.5.x branch and trunk
> FundBO version_id being updated with each new loan leads to concurrent user
> exceptions
> --------------------------------------------------------------------------------------
>
> Key: MIFOS-2903
> URL: http://mifosforge.jira.com/browse/MIFOS-2903
> Project: mifos
> Issue Type: Bug
> Components: Loan Account
> Affects Versions: Release 1.5
> Reporter: Sam Birney
> Assignee: mifosdeveloperqueue
> Priority: Blocker
> Fix For: Release 1.5.1, Shamim D
>
> Attachments: patch-2903.txt
>
>
> We upgraded to version 1.5 today. We had calls from several branches saying
> that sometimes they see a red dot when submitting a newly entered loan for
> approval, but that it was only happening sometimes. We found the following
> stack trace in the error logs. We discovered that the FUND table is being
> updated for each new loan account, resaving the fund with a new version_id
> (after 28 loans were entered today the version_ids of the funds in the table
> added up to 28) . This means that if two people enter loans at the same time
> with the same fund then the one who submits last will see the error.
> I replicated this on the test server ci.mifos.org:8085 --
> 1. open a client page in one browser
> 2. open a different client page in a different browser
> 3. click to create a loan (Educational Loan) in browser 1 with a source of
> fund (Funding Org D)
> 4. click to create a loan (Educational Loan) in browser 2 with a source of
> fund (Funding Org D)
> 5. click preview submit in browser 2
> 6. click preview submit in browser 1
> 7. click submit for approval in browser 2
> 8. click submit for approval in browser 1
> 9. see red dot error in browser 1 (and stack trace in log file)
> 2010-05-04/13:54:27.008/EEST ERROR,
> org.hibernate.event.def.AbstractFlushingEventListener, ?, ?, ?, Could not
> synchronize database state with session
> org.hibernate.StaleObjectStateException: Row was updated or deleted by
> another transaction (or unsaved-value mapping was incorrect):
> [org.mifos.accounts.fund.business.FundBO#1]
> at
> org.hibernate.persister.entity.AbstractEntityPersister.check(AbstractEntityPersister.java:1765)
> at
> org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2407)
> at
> org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2307)
> at
> org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2607)
> at
> org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:92)
> at
> org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250)
> at
> org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:234)
> at
> org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:142)
> at
> org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
> at
> org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
> at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
> at
> org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
> at
> org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
> at
> org.mifos.framework.hibernate.helper.HibernateUtil.commitTransaction(HibernateUtil.java:204)
> at
> org.mifos.framework.hibernate.helper.StaticHibernateUtil.commitTransaction(StaticHibernateUtil.java:113)
> at
> org.mifos.framework.struts.action.BaseAction.postExecute(BaseAction.java:211)
> at
> org.mifos.framework.struts.action.BaseAction.execute(BaseAction.java:109)
> at
> org.mifos.framework.struts.action.MifosRequestProcessor.processActionPerform(MifosRequestProcessor.java:204)
> at
> org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
> at
> org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
> at
> org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
> at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
> at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at
> org.mifos.security.util.LoginFilter.doFilter(LoginFilter.java:85)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at
> org.mifos.framework.persistence.DatabaseInitFilter.doFilter(DatabaseInitFilter.java:51)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
> at
> org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
> at
> org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
> at
> org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769)
> at
> org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698)
> at
> org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891)
> at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
> at java.lang.Thread.run(Unknown Source)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://mifosforge.jira.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
------------------------------------------------------------------------------
_______________________________________________
Mifos-issues mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mifos-issues