Hi,

If it's a deadlock, I guess you didn't lock the tables in the same order. I
suggest to use SELECT ... FOR UPDATE. But I can't solve the problem for
you, sorry.

Regards,
Thomas



On Friday, May 4, 2012, albert vallès 2 wrote:

> Hi,
>
> Having 3 threads running (one java swing application and two quartz jobs)
> with this h2 config:
>
> hibernate.dialect=com.scytl.edmpb.H2.H2Dialect
> db.driver=org.h2.Driver
> db.host=tcp://localhost
> db.tcpServer=-tcpAllowOthers
>
> db.options=MAX_MEMORY_UNDO=20000;MAX_OPERATION_MEMORY=20000;DB_CLOSE_DELAY=-1;LOCK_TIMEOUT=10000;IFEXISTS=TRUE;TRACE_LEVEL_FILE=3
>
> and this hibernate config:
>
> org.springframework.orm.hibernate3.LocalSessionFactoryBean
> org.springframework.orm.hibernate3.HibernateTransactionManager
> PROPAGATION_NEVER,ISOLATION_READ_UNCOMMITTED
> <prop
> key="hibernate.current_session_context_class">org.hibernate.context.ThreadLocalSessionContext</prop>
> <prop key="hibernate.cache.use_second_level_cache">true</prop>
> <prop key="hibernate.cache.use_query_cache">true</prop>
> <prop
> key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
> <prop key="hibernate.cache.use_structured_entries">true</prop>
>
> we get this java exception (attached more details):
>
> org.h2.jdbc.JdbcSQLException: Deadlock detected. The current transaction
> was rolled back. Details: "
> Session #1796 (user: SA) is waiting to lock PUBLIC.PACKAGE_VAULT while
> locking PUBLIC.BALLOTBOX (exclusive), PUBLIC.HISTORY_QUEUE (exclusive),
> PUBLIC.BALLOTBOX_SELECTION (exclusive).
> Session #1797 (user: SA) is waiting to lock PUBLIC.HISTORY_QUEUE while
> locking PUBLIC.PACKAGE_VAULT (exclusive), PUBLIC.OUTGOING_QUEUE
> (exclusive)."; SQL statement:
> insert into HISTORY_QUEUE (QUEUE_INSERT_TIME, CONTENT, QUEUE_POSITION)
> values (?, ?, ?) [40001-160]
> at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
>  at org.h2.message.DbException.get(DbException.java:169)
> at org.h2.message.DbException.get(DbException.java:146)
>  at org.h2.table.RegularTable.doLock(RegularTable.java:488)
> at org.h2.table.RegularTable.lock(RegularTable.java:434)
>  at org.h2.command.dml.Insert.insertRows(Insert.java:123)
> at org.h2.command.dml.Insert.update(Insert.java:84)
> at org.h2.command.CommandContainer.update(CommandContainer.java:73)
>  at org.h2.command.Command.executeUpdate(Command.java:219)
> at org.h2.server.TcpServerThread.process(TcpServerThread.java:300)
>  at org.h2.server.TcpServerThread.run(TcpServerThread.java:137)
> at java.lang.Thread.run(Unknown Source)
> at org.h2.engine.SessionRemote.done(SessionRemote.java:538)
>  at org.h2.command.CommandRemote.executeUpdate(CommandRemote.java:183)
> at
> org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:143)
>  at
> org.h2.jdbc.JdbcPreparedStatement.executeBatch(JdbcPreparedStatement.java:1092)
> at
> org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
>
> attached generated h2 trace.db
>
> using MVCC we get a org.h2.jdbc.JdbcSQLException: Timeout trying to lock
> table
>
>
> any ideas? LOCK_MODE? lock tables always in the same order? hibernate
> configuration? ...?
>
> thanks in advance!
>
> --
> You received this message because you are subscribed to the Google Groups
> "H2 Database" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/h2-database/-/HcUj-EgSF-0J.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/h2-database?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/h2-database?hl=en.

Reply via email to