2

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
sjain
  • 23,126
  • 28
  • 107
  • 185
  • I don’t understand what you’re trying to do here. Are you using the H2 JDBC driver to connect to Ignite? What are you using H2 for? If you’re just _using_ Ignite there’s no reason to manually set any reference to H2. – Stephen Darlington Aug 13 '21 at 15:30
  • @StephenDarlington - I am not using H2 for Ignite. I am using H2 for my test cases only. But somehow due to spring autowiring the flow is going through HikariDataSource which is unrelated to test cases. This is weird. I used `@RunWith(SpringRunner.class) @SpringBootTest` on top of test class that when I run then gives this exception. – sjain Aug 13 '21 at 15:43

2 Answers2

0

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

Alex K
  • 841
  • 4
  • 5
  • The version downgrade has changed the exception - `Function "LOCK_MODE" not found`. The grep command is now returning - `[INFO] +- com.h2database:h2:jar:1.4.197:compile` – sjain Aug 13 '21 at 15:19
0

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'
        }
    }
Steve
  • 11
  • 1