Db Corruption using windows + java 11

Thorsten Goetzke <[email protected]> Mon, 11 Mar 2019 17:59:10 +0100
Newsgroups gmane.comp.java.hsqldb.user
Message-ID <[email protected]>
Hello,

We are seeing some internal Exception in hsql when trying to do a 
defrag. The database shows odd behaviour after the Exception (unable to 
find some rows, more internal Exception)

It seems like this is not reproduceable under macos (Everything works 
fine). I am using the latest release 2.4.1 and opening a database that 
was created using some 2.2 version. Is anything known about this issue?
Can one validate or repair the database?


Best regards,
Thorsten Goetzke


2019-03-11 17:37:45,811 WARN  [hsqldb.db.HSQLDB6874746988.ENGINE] 
(UMS:class 
securiton.uls.tools.configuration.studio.operations.OperationMonitorHandlerSupport:Operations#Global::#1) 
JVM threw unsupported Exception
java.lang.IndexOutOfBoundsException
	at java.base/java.nio.Buffer.checkBounds(Buffer.java:709)
	at java.base/java.nio.ByteBuffer.get(ByteBuffer.java:733)
	at java.base/java.nio.DirectByteBuffer.get(DirectByteBuffer.java:319)
	at org.hsqldb.persist.ScaledRAFileNIO.read(Unknown Source)
	at org.hsqldb.persist.ScaledRAFileHybrid.read(Unknown Source)
	at org.hsqldb.persist.DataFileCache.readObject(Unknown Source)
	at org.hsqldb.persist.DataFileCache.getFromFile(Unknown Source)
	at org.hsqldb.persist.DataFileCache.get(Unknown Source)
	at org.hsqldb.persist.RowStoreAVLDisk.get(Unknown Source)
	at org.hsqldb.persist.RowStoreAVLDisk.setAccessor(Unknown Source)
	at org.hsqldb.Table.setIndexRoots(Unknown Source)
	at org.hsqldb.SchemaManager.setIndexRoots(Unknown Source)
	at org.hsqldb.persist.DataFileCache.defrag(Unknown Source)
	at org.hsqldb.persist.Log.defrag(Unknown Source)
	at org.hsqldb.persist.Log.checkpoint(Unknown Source)
	at org.hsqldb.persist.Logger.checkpointInternal(Unknown Source)
	at org.hsqldb.persist.Logger.checkpoint(Unknown Source)
	at org.hsqldb.StatementCommand.getResult(Unknown Source)
	at org.hsqldb.StatementCommand.execute(Unknown Source)
	at org.hsqldb.Session.executeCompiledStatement(Unknown Source)
	at org.hsqldb.Session.executeDirectStatement(Unknown Source)
	at org.hsqldb.Session.execute(Unknown Source)
	at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source)
	at org.hsqldb.jdbc.JDBCStatement.execute(Unknown Source)
	at 
securiton.uls.tools.configuration.plugins.editdb.dbfunctions.HsqldbBackup.copyToProjDB(HsqldbBackup.java:114)
	at 
securiton.uls.tools.configuration.plugins.editdb.dbfunctions.HsqldbHandler.save(HsqldbHandler.java:115)
	at 
securiton.uls.tools.configuration.plugins.editdb.dbfunctions.DataProviderHandlerImpl.saveDatabase(DataProviderHandlerImpl.java:237)
	at 
securiton.uls.tools.configuration.plugins.editdb.dbfunctions.DataProviderHandlerImpl.saveWithFlush(DataProviderHandlerImpl.java:216)
	at 
securiton.uls.tools.configuration.plugins.editdb.dbfunctions.DataProviderHandlerImpl.save(DataProviderHandlerImpl.java:208)
	at 
securiton.uls.tools.configuration.plugins.editdb.data.EditDbDataSupport$3.doMaintenance(EditDbDataSupport.java:85)
	at 
securiton.uls.tools.configuration.api.project.impl.DataInstanceImpl.doMaintenance(DataInstanceImpl.java:142)
	at 
securiton.uls.tools.configuration.api.project.xmldata.embedded.EmbeddedXmlDataSource.save(EmbeddedXmlDataSource.java:38)
	at 
securiton.uls.tools.configuration.framework.project.datasection.impl.DataSectionImpl.save(DataSectionImpl.java:124)
	at 
securiton.uls.tools.configuration.framework.project.datasection.impl.DataSectionsImpl.save(DataSectionsImpl.java:356)
	at 
securiton.uls.tools.configuration.studio.project.impl.ProjectImpl.save(ProjectImpl.java:589)
	at 
securiton.uls.tools.configuration.studio.project.impl.ProjectProviderImpl.saveProjectAsInternal(ProjectProviderImpl.java:371)
	at 
securiton.uls.tools.configuration.studio.project.impl.ProjectProviderImpl.saveProjectAs(ProjectProviderImpl.java:270)
	at 
securiton.uls.tools.configuration.studio.actions.SaveAsProjectAction$2.run(SaveAsProjectAction.java:93)
	at 
securiton.uls.tools.configuration.studio.operations.OperationHandlerImpl$OperationRunnable.run(OperationHandlerImpl.java:248)
	at 
securiton.uls.utilities.lang.concurrent.CallWrapperFactoryImpl$1.call(CallWrapperFactoryImpl.java:29)
	at 
securiton.uls.utilities.lang.concurrent.CallWrapperFactoryImpl$1.call(CallWrapperFactoryImpl.java:26)
	at 
securiton.uls.utilities.lang.concurrent.CallWrapper.run(CallWrapper.java:42)
	at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:834)
2019-03-11 17:37:45,812 FATAL [hsqldb.db.HSQLDB6874746988.ENGINE] 
(UMS:class 
securiton.uls.tools.configuration.studio.operations.OperationMonitorHandlerSupport:Operations#Global::#1) 
//C:\UMS\studio11.0-branch\tmp\securiton\configstudio\editdb\editdb-1552322034928.work.data 
getFromFile 2858583
org.hsqldb.HsqlException: java.io.IOException: 
java.lang.IndexOutOfBoundsException
	at org.hsqldb.error.Error.error(Unknown Source)
	at org.hsqldb.persist.DataFileCache.readObject(Unknown Source)
	at org.hsqldb.persist.DataFileCache.getFromFile(Unknown Source)
	at org.hsqldb.persist.DataFileCache.get(Unknown Source)
	at org.hsqldb.persist.RowStoreAVLDisk.get(Unknown Source)
	at org.hsqldb.persist.RowStoreAVLDisk.setAccessor(Unknown Source)
	at org.hsqldb.Table.setIndexRoots(Unknown Source)
	at org.hsqldb.SchemaManager.setIndexRoots(Unknown Source)
	at org.hsqldb.persist.DataFileCache.defrag(Unknown Source)
	at org.hsqldb.persist.Log.defrag(Unknown Source)
	at org.hsqldb.persist.Log.checkpoint(Unknown Source)
	at org.hsqldb.persist.Logger.checkpointInternal(Unknown Source)
	at org.hsqldb.persist.Logger.checkpoint(Unknown Source)
	at org.hsqldb.StatementCommand.getResult(Unknown Source)
	at org.hsqldb.StatementCommand.execute(Unknown Source)
	at org.hsqldb.Session.executeCompiledStatement(Unknown Source)
	at org.hsqldb.Session.executeDirectStatement(Unknown Source)
	at org.hsqldb.Session.execute(Unknown Source)
	at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source)
	at org.hsqldb.jdbc.JDBCStatement.execute(Unknown Source)