Hibernate flushing

2 views
Skip to first unread message

ibme

unread,
Feb 5, 2015, 1:17:53 PM2/5/15
to d...@openmrs.org

I have been using OpenMRS for about two months now on a clinical trial and occasionally encounter the Hibernate flushing error (pasted below). After a bit of digging, it appears that sporadic issues can crop up in Hibernate (as it changes the order of CRUD operations) when there are database constraints. I'm wondering if anyone can shed light on what the implications of this error are on the transaction (query) and in general if the error re-appears continually ? Also, any suggestions for fixes would be appreciated. 

Arvind

Error" org.springframework.jdbc.UncategorizedSQLException: Hibernate flushing: could not insert collection: [org.openmrs.Cohort.memberIds#113]; uncategorized SQLException for SQL [insert into cohort_member (cohort_id, patient_id) values (?, ?)]; SQL state [41000]; error code [1205]; Lock wait timeout exceeded; try restarting transaction; nested exception is java.sql.BatchUpdateException: Lock wait timeout exceeded; try restarting transaction
        at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
        at org.springframework.orm.hibernate3.HibernateTransactionManager.convertJdbcAccessException(HibernateTransactionManager.java:805)
        at org.springframework.orm.hibernate3.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:791)
        at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:664)
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754)
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723)
        at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:393)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:120)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
        at com.sun.proxy.$Proxy138.saveCohort(Unknown Source)
        at org.openmrs.module.myfirstmodule.updateCohortForallPHC(File.java:293)
        at org.openmrs.module.myfirstmodule.MyFirstModuleTask.execute(MyFirstModuleTask.java:118)
        at org.openmrs.scheduler.tasks.TaskThreadedInitializationWrapper.execute(TaskThreadedInitializationWrapper.java:72)
        at org.openmrs.scheduler.timer.TimerSchedulerTask.execute(TimerSchedulerTask.java:98)
        at org.openmrs.api.context.Daemon$2.run(Daemon.java:116)
Caused by: java.sql.BatchUpdateException: Lock wait timeout exceeded; try restarting transaction
        at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2016)
        at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1452)
        at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeBatch(NewProxyPreparedStatement.java:1723)
        at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
        at org.hibernate.jdbc.BatchingBatcher.addToBatch(BatchingBatcher.java:56)
        at org.hibernate.persister.collection.AbstractCollectionPersister.recreate(AbstractCollectionPersister.java:1206)
        at org.hibernate.action.CollectionRecreateAction.execute(CollectionRecreateAction.java:58)
        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:188)
        at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
        at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
        at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216)
        at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:383)
        at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:133)
        at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:656)

Lluis Martinez

unread,
Feb 5, 2015, 3:20:45 PM2/5/15
to d...@openmrs.org
It's weird that an insert waits for a lock (unless the whole table is locked). Can we see the source code ? 

--
OpenMRS Developers: http://om.rs/dev
Post: d...@openmrs.org | Unsubscribe: dev+uns...@openmrs.org
Manage your OpenMRS subscriptions at http://om.rs/id
 
Register today for our Maputo 2015 Implementers Meeting: http://om.rs/moz15

To unsubscribe from this group and stop receiving emails from it, send an email to dev+uns...@openmrs.org.

Reply all
Reply to author
Forward
0 new messages