Not for me, unfortunately. Running 1.3.166, embedded in my app, I got the following stack trace today:
05-02 06:41:42 jdbc[8]: exception
org.h2.jdbc.JdbcSQLException: Row not found when trying to delete from index "PUBLIC.I_JSTEP_FINISH_TIME: ( /* key:3339153 */ 3339153, 0, 'Windows', TIMESTAMP '2009-03-08 00:30:00.734', 1236472200734, NULL, 'admin', TIMESTAMP '2009-03-08 02:11:13.281', 1236478273281, 'project: Commander', 'none', 'none', NULL, NULL, NULL, NULL, FALSE, NULL, FALSE, NULL, 'true', NULL, NULL, NULL, TRUE, NULL, NULL, NULL, 'failProcedure', 0, 0, TIMESTAMP '2009-03-08 02:10:34.844', 1236478234844, 0, NULL, NULL, NULL, 0, 'Windows.3339153.log', 'error', TRUE, 0, 'Master', NULL, 'procedure', 0, 0, NULL, 0, TIMESTAMP '2009-03-08 00:31:50.936', 1236472310936, NULL, 0, TIMESTAMP '2009-03-08 00:31:52.451', 1236472312451, 0, 'completed', 'Master-OnePlatform', 'Commander', 0, NULL, NULL, FALSE, NULL, NULL, 0, 2583807, 5932765, 2583808, NULL, NULL, NULL, NULL, NULL, 151908, 3339144, NULL, NULL, NULL)"; SQL statement:
/* update com.electriccloud.commander.domain.JobStepImpl */ update ec_job_step set version=?, procedure_id=?, procedure_step_id=? where id=? and version=? [90112-166]
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.index.PageBtreeLeaf.remove(PageBtreeLeaf.java:225)
at org.h2.index.PageBtreeNode.remove(PageBtreeNode.java:324)
at org.h2.index.PageBtreeNode.remove(PageBtreeNode.java:324)
at org.h2.index.PageBtreeNode.remove(PageBtreeNode.java:324)
at org.h2.index.PageBtreeIndex.remove(PageBtreeIndex.java:241)
at org.h2.index.MultiVersionIndex.remove(MultiVersionIndex.java:170)
at org.h2.table.RegularTable.removeRow(RegularTable.java:361)
at org.h2.table.Table.updateRows(Table.java:430)
at org.h2.command.dml.Update.update(Update.java:143)
at org.h2.command.CommandContainer.update(CommandContainer.java:73)
at org.h2.command.Command.executeUpdate(Command.java:226)
at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:143)
at org.h2.jdbc.JdbcPreparedStatement.executeBatch(JdbcPreparedStatement.java:1092)
at com.jolbox.bonecp.StatementHandle.executeBatch(StatementHandle.java:473)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:114)
at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:109)
at org.hibernate.jdbc.AbstractBatcher.prepareBatchStatement(AbstractBatcher.java:244)
at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2582)
at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2535)
at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2862)
at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:113)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:282)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:274)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:192)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:327)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
at com.electriccloud.hibernate3.HibernateEventListenerImpl.onFlush(HibernateEventListenerImpl.java:80)
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 com.electriccloud.hibernate3.HibernateTransactionHelper.commit(HibernateTransactionHelper.java:192)
at com.electriccloud.transaction.AbstractTransactionHelper.commitAndBegin(AbstractTransactionHelper.java:97)
at com.electriccloud.transaction.AbstractTransactionHelper.commitPeriodically(AbstractTransactionHelper.java:121)
at sun.reflect.GeneratedMethodAccessor1234.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
My jdbc url: jdbc:h2:builtin/foo;MVCC=TRUE;CACHE_SIZE=128000
Not sure this is important, but my application was churning for about 36 hours importing data (in our own xml format) before it failed like this. The db file was about 19GB. I'm running jdk 1.7.0_03. I looked through the schema for any varchar columns > 1k, and it seems we do have one column that is a varchar(4000). I have to search the data to see if we actually supply a value above 1k for that column.
-Sandeep