Hi, we used h2-1.2.147 since it was introduced, and we ran into no
problems at all!
Recently we upgraded to 1.3 164 and then 165, and when "converting"
databases (a very intensive process), everything runs Ok, until the
app gets shut down, and in the next session we have data corruption in
the database, sometimes UNRECOVERABLE (one data row is totally messed
up!)
I'm reverting to 1.2 version, but i would like to know if there is any
know problem. All i can give you is this:
TRACE FILE:
04-06 21:28:38 jdbc[7]: null
org.h2.message.DbException: The connection was not closed by the
application and is garbage collected [90018-164]
at org.h2.message.DbException.get(DbException.java:169)
at org.h2.message.DbException.get(DbException.java:146)
at org.h2.message.DbException.get(DbException.java:135)
at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:174)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
at org.h2.Driver.connect(Driver.java:72)
at java.sql.DriverManager.getConnection(DriverManager.java:579)
at java.sql.DriverManager.getConnection(DriverManager.java:221)
at com.jolbox.bonecp.BoneCP.obtainRawInternalConnection(BoneCP.java:
230)
at
com.jolbox.bonecp.ConnectionHandle.obtainInternalConnection(ConnectionHandle.java:
197)
at com.jolbox.bonecp.ConnectionHandle.<init>(ConnectionHandle.java:
154)
at
com.jolbox.bonecp.PoolWatchThread.fillConnections(PoolWatchThread.java:
121)
at com.jolbox.bonecp.PoolWatchThread.run(PoolWatchThread.java:102)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:
1110)
at java.util.concurrent.ThreadPoolExecutor
$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed
by the application and is garbage collected [90018-164]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:
329)
... 17 more
04-06 21:31:02 database: close
java.lang.ArrayIndexOutOfBoundsException: 2048
at org.h2.store.Data.writeVarLong(Data.java:1226)
at org.h2.store.Data.writeValue(Data.java:465)
at org.h2.index.PageDataLeaf.writeData(PageDataLeaf.java:508)
at org.h2.index.PageDataLeaf.moveTo(PageDataLeaf.java:545)
at org.h2.store.PageStore.compact(PageStore.java:709)
at org.h2.store.PageStore.compact(PageStore.java:523)
at org.h2.engine.Database.closeOpenFilesAndUnlock(Database.java:1198)
at org.h2.engine.Database.close(Database.java:1148)
at org.h2.engine.DatabaseCloser.run(DatabaseCloser.java:80)
04-06 21:31:16 jdbc[7]: null
org.h2.message.DbException: The connection was not closed by the
application and is garbage collected [90018-164]
at org.h2.message.DbException.get(DbException.java:169)
at org.h2.message.DbException.get(DbException.java:146)
at org.h2.message.DbException.get(DbException.java:135)
at org.h2.jdbc.JdbcConnection.closeOld(JdbcConnection.java:174)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
at org.h2.Driver.connect(Driver.java:72)
at java.sql.DriverManager.getConnection(DriverManager.java:579)
at java.sql.DriverManager.getConnection(DriverManager.java:221)
at com.jolbox.bonecp.BoneCP.obtainRawInternalConnection(BoneCP.java:
230)
at
com.jolbox.bonecp.ConnectionHandle.obtainInternalConnection(ConnectionHandle.java:
197)
at com.jolbox.bonecp.ConnectionHandle.<init>(ConnectionHandle.java:
154)
at
com.jolbox.bonecp.PoolWatchThread.fillConnections(PoolWatchThread.java:
121)
at com.jolbox.bonecp.PoolWatchThread.run(PoolWatchThread.java:102)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:
1110)
at java.util.concurrent.ThreadPoolExecutor
$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: org.h2.jdbc.JdbcSQLException: The connection was not closed
by the application and is garbage collected [90018-164]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:
329)
... 17 more
JAVA EXCEPTION:
!ENTRY org.eclipse.ui 4 0 2012-04-06 21:27:06.824
!MESSAGE Unhandled event loop exception
!STACK 0
org.eclipse.swt.SWTException: Failed to execute runnable
(javax.jdo.JDODataStoreException: Exception thrown when executing
query
NestedThrowables:
org.h2.jdbc.JdbcSQLException: File corrupted while reading record:
"type: 176". Possible solution: use the recovery tool; SQL statement:
SELECT MAX(A0.NUMERODOCUMENTO) FROM ENTIDADESDOCUMENTOS A0 LEFT OUTER
JOIN DOCUMENTOSSERIES B0 ON A0.SERIEDOCUMENTO = B0."KEY" LEFT OUTER
JOIN DOCUMENTOSTIPOS C0 ON B0.TIPODOCUMENTO = C0.CODIGO WHERE
C0.CODIGO = 'CFA' AND B0.SERIE = '2011' AND A0.NUMERODOCUMENTO < 5
[90030-164])
at org.eclipse.swt.SWT.error(SWT.java:4282)
at org.eclipse.swt.SWT.error(SWT.java:4197)
at
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:
138)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:
4140)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3757)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:
2701)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679)
at
org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:
332)
at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:
668)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:
149)
at rcp.Application.start(Application.java:43)
at
org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:
196)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:
110)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:
79)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:
344)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:
179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
Caused by: javax.jdo.JDODataStoreException: Exception thrown when
executing query
NestedThrowables:
org.h2.jdbc.JdbcSQLException: File corrupted while reading record:
"type: 176". Possible solution: use the recovery tool; SQL statement:
SELECT MAX(A0.NUMERODOCUMENTO) FROM ENTIDADESDOCUMENTOS A0 LEFT OUTER
JOIN DOCUMENTOSSERIES B0 ON A0.SERIEDOCUMENTO = B0."KEY" LEFT OUTER
JOIN DOCUMENTOSTIPOS C0 ON B0.TIPODOCUMENTO = C0.CODIGO WHERE
C0.CODIGO = 'CFA' AND B0.SERIE = '2011' AND A0.NUMERODOCUMENTO < 5
[90030-164]
at
org.datanucleus.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:
319)
at org.datanucleus.jdo.JDOQuery.execute(JDOQuery.java:230)
at
rcp.colibri.dao.database.manager.EntidadesdocumentosManager.getPreviousEntidadesdocumentos(EntidadesdocumentosManager.java:
597)
at
rcp.colibri.dao.database.ColibriDatabase.getPreviousEntidadesdocumentos(ColibriDatabase.java:
2049)
at
rcp.colibri.workbench.views.entidades.emissao.EntidadesEmissaoContainer.retrievePreviousObject(EntidadesEmissaoContainer.java:
149)
at
rcp.colibri.workbench.views.entidades.emissao.jobs.RegistoAnteriorJob
$1.run(RegistoAnteriorJob.java:26)
at org.dma.utils.eclipse.core.jobs.CustomJob$1.run(CustomJob.java:
129)
at
org.eclipse.ui.internal.UILockListener.doPendingWork(UILockListener.java:
164)
at org.eclipse.ui.internal.UISynchronizer$3.run(UISynchronizer.java:
158)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:
135)
... 23 more
Caused by: org.h2.jdbc.JdbcSQLException: File corrupted while reading
record: "type: 176". Possible solution: use the recovery tool; SQL
statement:
SELECT MAX(A0.NUMERODOCUMENTO) FROM ENTIDADESDOCUMENTOS A0 LEFT OUTER
JOIN DOCUMENTOSSERIES B0 ON A0.SERIEDOCUMENTO = B0."KEY" LEFT OUTER
JOIN DOCUMENTOSTIPOS C0 ON B0.TIPODOCUMENTO = C0.CODIGO WHERE
C0.CODIGO = 'CFA' AND B0.SERIE = '2011' AND A0.NUMERODOCUMENTO < 5
[90030-164]
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.store.Data.readValue(Data.java:855)
at org.h2.index.PageDataLeaf.readRow(PageDataLeaf.java:600)
at org.h2.index.PageDataLeaf.getRowAt(PageDataLeaf.java:330)
at org.h2.index.PageDataCursor.nextRow(PageDataCursor.java:97)
at org.h2.index.PageDataCursor.next(PageDataCursor.java:49)
at org.h2.index.IndexCursor.next(IndexCursor.java:238)
at org.h2.table.TableFilter.next(TableFilter.java:353)
at org.h2.command.dml.Select.queryGroup(Select.java:311)
at org.h2.command.dml.Select.queryWithoutCache(Select.java:613)
at org.h2.command.dml.Query.query(Query.java:297)
at org.h2.command.dml.Query.query(Query.java:267)
at org.h2.command.dml.Query.query(Query.java:36)
at org.h2.command.CommandContainer.query(CommandContainer.java:82)
at org.h2.command.Command.executeQuery(Command.java:187)
at
org.h2.jdbc.JdbcPreparedStatement.executeQuery(JdbcPreparedStatement.java:
96)
at
com.jolbox.bonecp.PreparedStatementHandle.executeQuery(PreparedStatementHandle.java:
197)
at
org.datanucleus.store.rdbms.SQLController.executeStatementQuery(SQLController.java:
457)
at
org.datanucleus.store.rdbms.query.JDOQLQuery.performExecuteInternal(JDOQLQuery.java:
751)
at org.datanucleus.store.query.Query$1.run(Query.java:1848)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:
471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.lang.Thread.run(Thread.java:722)
--
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.