9 messages in com.googlegroups.h2-databaseRe: Timeout trying to lock... [HYT00-50]
FromSent OnAttachments
Thomas WiradikusumaDec 19, 2007 12:20 am 
Thomas MuellerDec 22, 2007 1:29 am 
Thomas MuellerDec 22, 2007 1:31 am 
Thomas WiradikusumaDec 22, 2007 3:27 am 
Thomas MuellerDec 26, 2007 8:42 am 
Thomas WiradikusumaDec 26, 2007 7:52 pm 
Thomas WiradikusumaDec 26, 2007 8:23 pm 
Thomas MuellerDec 28, 2007 8:05 am 
Thomas WiradikusumaDec 28, 2007 9:14 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: Timeout trying to lock... [HYT00-50]Actions...
From:Thomas Mueller (thom@gmail.com)
Date:Dec 22, 2007 1:29:01 am
List:com.googlegroups.h2-database

Hi,

According to the exception code (-50) you are using version 1.0.50 from 2007-06-17. You should consider using a newer version. In newer versions, read committed is the default isolation level (like in most other databases). With older versions (including the version you are using), the default isolation level is serializable, where such scenarios can easily lead to lock timeout.

Regards, Thomas

On Dec 19, 2007 9:20 AM, Thomas Wiradikusuma <wira@gmail.com> wrote:

hello guys, i'm experiencing this exception everytime I want to remove/save row.

org.h2.jdbc.JdbcBatchUpdateException: Timeout trying to lock table CONTENTASSETRESPONSE [HYT00-50] at org.h2.jdbc.JdbcPreparedStatement.executeBatch(JdbcPreparedStatement.java: 1040) at org.apache.commons.dbcp.DelegatingStatement.executeBatch( DelegatingStatement.java: 297) at org.apache.commons.dbcp.DelegatingStatement.executeBatch( DelegatingStatement.java: 297) at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java: 48) at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java: 242) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java : 235) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java : 139) 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.springframework.orm.hibernate3.HibernateTransactionManager.doCommit( HibernateTransactionManager.java: 578) at

org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit (AbstractPlatformTransactionManager.java: 662) at

org.springframework.transaction.support.AbstractPlatformTransactionManager.commit (AbstractPlatformTransactionManager.java: 632) at

org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning (TransactionAspectSupport.java: 314) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke( TransactionInterceptor.java: 116) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( ReflectiveMethodInvocation.java: 171) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke( JdkDynamicAopProxy.java: 204)

if I do this in sequence (assuming the record/row is there), I'm using Hibernate: - load from DB - change some value in the object (ex. obj.setName("thomas")) - remove from DB everything is OK

but if I create n threads (each thread handle different object <-- from different row), the expection happens, and the rows are not deleted BUT the data is changed (contents of "name" changed to "thomas").

i use Hibernate/Spring transaction support, Isolation read uncommitted, auto-commit.

any hint? thx in advance.

regards, Thomas Wiradikusuma