H2 database DbException - Unsupported connection setting "MULTI_THREADED"

3.4k Views Asked by At

Recently, I upgraded the ignite version to 2.10.0. This needs the upgrade on H2 database as well because H2 has a hard dependency on ignite. So I updated the H2 database to 1.4.200.

Since then my test cases are failing.

Error logs:-

Caused by: org.h2.jdbc.JdbcSQLNonTransientConnectionException: Unsupported connection setting "MULTI_THREADED" [90113-200]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:622)
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:429)
    at org.h2.message.DbException.get(DbException.java:205)
    at org.h2.message.DbException.get(DbException.java:181)
    at org.h2.engine.ConnectionInfo.readSettingsFromURL(ConnectionInfo.java:269)
    at org.h2.engine.ConnectionInfo.<init>(ConnectionInfo.java:78)
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:152)
    at org.h2.Driver.connect(Driver.java:69)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:251)
    at org.apache.ignite.internal.processors.query.h2.ConnectionManager.<init>(ConnectionManager.java:118)
    ... 133 more

I am using maven as my build tool. My Java version is jdk11.0.9_12.

EDIT:

According to H2 Version 1.4.200 Release Notes, the MULTI_THREADED setting is removed, MVStore engine is always multi-threaded, PageStore engine is always single-threaded.

But I am not adding MULTI_THREADED setting anywhere in my code.

EDIT:

Changing the H2 version to 1.4.197 is giving new exception as follows:-

Caused by: org.h2.jdbc.JdbcSQLException: Function "LOCK_MODE" not found; SQL statement:
CALL LOCK_MODE() [90022-197]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:357)
    at org.h2.message.DbException.get(DbException.java:179)
    at org.h2.message.DbException.get(DbException.java:155)
    at org.h2.command.Parser.readJavaFunction(Parser.java:2699)
    at org.h2.command.Parser.readFunction(Parser.java:2756)
    at org.h2.command.Parser.readTerm(Parser.java:3102)
    at org.h2.command.Parser.readFactor(Parser.java:2587)
    at org.h2.command.Parser.readSum(Parser.java:2574)
    at org.h2.command.Parser.readConcat(Parser.java:2544)
    at org.h2.command.Parser.readCondition(Parser.java:2370)
    at org.h2.command.Parser.readAnd(Parser.java:2342)
    at org.h2.command.Parser.readExpression(Parser.java:2334)
    at org.h2.command.Parser.parseCall(Parser.java:4854)
    at org.h2.command.Parser.parsePrepared(Parser.java:382)
    at org.h2.command.Parser.parse(Parser.java:335)
    at org.h2.command.Parser.parse(Parser.java:307)
    at org.h2.command.Parser.prepareCommand(Parser.java:278)
    at org.h2.engine.Session.prepareLocal(Session.java:611)
    at org.h2.engine.Session.prepareCommand(Session.java:549)
    at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1251)
    at org.h2.jdbc.JdbcConnection.getTransactionIsolation(JdbcConnection.java:815)
    at com.zaxxer.hikari.pool.PoolBase.checkDefaultIsolation(PoolBase.java:479)
    at com.zaxxer.hikari.pool.PoolBase.checkDriverSupport(PoolBase.java:442)
    at com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:410)
    at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:363)
    at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206)
    at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:477)
    at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:560)
    ... 151 more
2

There are 2 best solutions below

1
Alex K On

Per Ignite 2.10.0 GitHub, You need to use version 1.4.197

you can also run mvn dependency:tree | grep h2 at the root of the project to see H2 dependencies

0
Steve On

I had a similar issue with org.apache.ignite:ignite-indexing:2.12.0 and Micronaut 3.2.6 this worked for me:

    implementation ('com.h2database:h2') {
        version {
            strictly '1.4.197'
        }
    }