Greetings,

I am a user only but my understanding is:

1) please use the latest H2 release since anything prior 2.3.232 had
serious issues
2) unless you can show a Java only, self containing (and free of third-
party software) reproducer, nobody will be able to help you

Personal experience:

We are running 21 large databases (e.g. 20GB data each, 120 indexed
tables) using  H2 2.3.239 Snapshot in a multi country, multi user
environment, massive daily DML.

It runs mostly stable, but depends on regular "SHUTDOWN DEFRAG" (or
else db file will explode).
Corruption seems to occur sometimes (like 1/100?), but was always
recoverable.

Important: set the TEMP folder explicitly for very large databases
because H2 will create large temp files (easily exhausting the default
/tmp size).

Good luck and cheers
Andreas 


On Fri, 2025-01-10 at 12:08 +0530, 'Balamurali Krishna Ippili' via H2
Database wrote:
> Hi Team,
> 
> We are getting a DB corruption issue intermittently with H2DB 2.2.224
> version and following are the error details:
> 
> =================================================ERROR
> START================================================================
> ====
> Exception while CRUD field mappings getNimMdrFieldMappingsByMdr
> org.h2.jdbc.JdbcSQLNonTransientConnectionException: File corrupted
> while reading record:
> "/opt/cloakware/cspmserver_thirdparty/tomcat/webapps/ca-nim-sm/WEB-
> INF/data/nim-sm-customizations.mv.db". Possible solution: use the
> recovery tool [90030-224]
> at
> org.h2.message.DbException.getJdbcSQLException(DbException.java:690)
> ~[h2-2.2.224.jar:2.2.224]
> at
> org.h2.message.DbException.getJdbcSQLException(DbException.java:489)
> ~[h2-2.2.224.jar:2.2.224]
> at org.h2.message.DbException.get(DbException.java:212) ~[h2-
> 2.2.224.jar:2.2.224]
> at org.h2.mvstore.db.Store.convertMVStoreException(Store.java:163)
> ~[h2-2.2.224.jar:2.2.224]
> at org.h2.mvstore.db.Store.<init>(Store.java:142) ~[h2-
> 2.2.224.jar:2.2.224]
> at org.h2.engine.Database.<init>(Database.java:326) ~[h2-
> 2.2.224.jar:2.2.224]
> at org.h2.engine.Engine.openSession(Engine.java:92) ~[h2-
> 2.2.224.jar:2.2.224]
> at org.h2.engine.Engine.openSession(Engine.java:222) ~[h2-
> 2.2.224.jar:2.2.224]
> at org.h2.engine.Engine.createSession(Engine.java:201) ~[h2-
> 2.2.224.jar:2.2.224]
> at
> org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.jav
> a:343) ~[h2-2.2.224.jar:2.2.224]
> at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:125) ~[h2-
> 2.2.224.jar:2.2.224]
> at org.h2.Driver.connect(Driver.java:59) ~[h2-2.2.224.jar:1.3.176]
> at java.sql.DriverManager.getConnection(DriverManager.java:664)
> ~[?:1.8.0_432]
> at java.sql.DriverManager.getConnection(DriverManager.java:208)
> ~[?:1.8.0_432]
> at
> com.j256.ormlite.jdbc.JdbcConnectionSource.makeConnection(JdbcConnect
> ionSource.java:252) ~[ormlite-jdbc-4.48.jar:?]
> at
> com.j256.ormlite.jdbc.JdbcConnectionSource.getReadWriteConnection(Jdb
> cConnectionSource.java:184) ~[ormlite-jdbc-4.48.jar:?]
> at
> com.j256.ormlite.jdbc.JdbcConnectionSource.getReadOnlyConnection(Jdbc
> ConnectionSource.java:170) ~[ormlite-jdbc-4.48.jar:?]
> at
> com.j256.ormlite.stmt.StatementExecutor.buildIterator(StatementExecut
> or.java:243) ~[ormlite-core-4.48.jar:?]
> at
> com.j256.ormlite.stmt.StatementExecutor.query(StatementExecutor.java:
> 196) ~[ormlite-core-4.48.jar:?]
> at com.j256.ormlite.dao.BaseDaoImpl.query(BaseDaoImpl.java:265)
> ~[ormlite-core-4.48.jar:?]
> at
> com.ca.integration.normalization.common.persistence.FieldMappingsDbPe
> rsistenceImpl.getNimMdrFieldMappingsByMdr(FieldMappingsDbPersistenceI
> mpl.java:139) ~[ca-nim-common-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
> at
> com.ca.integration.normalization.common.SMFieldMappingHandler.cloneMa
> ppings(SMFieldMappingHandler.java:1437) ~[ca-nim-sm-core-3.2.0-
> SNAPSHOT.jar:3.2.0-SNAPSHOT]
> 
> =================================================ERROR
> END==================================================================
> ==
> 
> The DB is getting corrupted when we are reading a table which
> contains only 225 records in it. It is not a huge DB or we don't have
> more than 20 small tables init. The issue is occurring intermittently
> and not able to understand the pattern but it is failing with the
> same error message
> "org.h2.jdbc.JdbcSQLNonTransientConnectionException: File corrupted
> while reading record:", This is occurring on the fly when the
> application is running and we cannot use the recovery tool here as
> suggested in the error message "Possible solution: use the recovery
> tool [90030-224]"
> 
> The getNimMdrFieldMappingsByMdr function  is just reading 225
> records(key value pair data) from a H2DB table but it is not
> successful sometimes with no reason other than reporting the DB
> corruption issue.
> 
> 
> Following are the details:
> ===================
> H2 DB version - 2.2.224
> Java version : OpenJDK8
> Application Server : Tomcat 9.x
> 
> Can any one help here to understand the issue and suggest on how to
> address this issue? Let me know if we have a quick call to check the
> same.
> 
> 
> Thanks,
> Balamurali
> 
> 
> 
> 
> 
> This electronic communication and the information and any files
> transmitted with it, or attached to it, are confidential and are
> intended solely for the use of the individual or entity to whom it is
> addressed and may contain information that is confidential, legally
> privileged, protected by privacy laws, or otherwise restricted from
> disclosure to anyone else. If you are not the intended recipient or
> the person responsible for delivering the e-mail to the intended
> recipient, you are hereby notified that any use, copying,
> distributing, dissemination, forwarding, printing, or copying of this
> e-mail is strictly prohibited. If you received this e-mail in error,
> please return the e-mail to the sender, delete it from your computer,
> and destroy any printed copy of it.
> -- 
> You received this message because you are subscribed to the Google
> Groups "H2 Database" group.
> To unsubscribe from this group and stop receiving emails from it,
> send an email to h2-database+unsubscr...@googlegroups.com.
> To view this discussion visit
> https://groups.google.com/d/msgid/h2-database/CAG6_yCCDoFrpeVx6%3DgS6_FGh4LiKi94Wqegghmi20SijMRgvqg%40mail.gmail.com
> [1].


[1] 
https://groups.google.com/d/msgid/h2-database/CAG6_yCCDoFrpeVx6%3DgS6_FGh4LiKi94Wqegghmi20SijMRgvqg%40mail.gmail.com
    
https://groups.google.com/d/msgid/h2-database/CAG6_yCCDoFrpeVx6%3DgS6_FGh4LiKi94Wqegghmi20SijMRgvqg%40mail.gmail.com?utm_medium=email&utm_source=footer

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to h2-database+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/h2-database/9aff767c7ace85369b2d0e88ed2958d62c43eb8a.camel%40manticore-projects.com.

Reply via email to