Add GraalVM Reachability Metadata and corresponding nativeTest for Firebird#34307
Merged
strongduanmu merged 2 commits intoapache:masterfrom Jan 21, 2025
Merged
Add GraalVM Reachability Metadata and corresponding nativeTest for Firebird#34307strongduanmu merged 2 commits intoapache:masterfrom
strongduanmu merged 2 commits intoapache:masterfrom
Conversation
7 tasks
0e2a259 to
ffac483
Compare
linghengqian
commented
Jan 12, 2025
Member
Author
There was a problem hiding this comment.
- The interesting thing is that I cannot reproduce the error log of https://github.com/apache/shardingsphere/actions/runs/12734368802/job/35491847525?pr=34307 locally.
Failures (1):
JUnit Jupiter:FirebirdTest:assertShardingInLocalTransactions()
MethodSource [className = 'org.apache.shardingsphere.test.natived.jdbc.databases.FirebirdTest', methodName = 'assertShardingInLocalTransactions', methodParameterTypes = '']
=> java.sql.SQLTransientConnectionException: HikariPool-65 - Connection is not available, request timed out after 30000ms.
com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:696)
com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:197)
com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:162)
com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128)
org.apache.shardingsphere.driver.jdbc.core.connection.DriverDatabaseConnectionManager.createConnection(DriverDatabaseConnectionManager.java:375)

- Maybe there is something I'm not aware of and the connection leak only happens in the Github Actions device.
- update in 2025.01.12: According to the results of https://github.com/apache/shardingsphere/actions/runs/12734759305/job/35492699852?pr=34307 ,
org.apache.shardingsphere.test.natived.jdbc.databases.FirebirdTestruns fine under normal JVM, but fails under GraalVM Native Image, which is interesting. - update in 2025.01.14: According to the test results of https://github.com/apache/shardingsphere/actions/runs/12768181816/job/35588020566?pr=34307 ,
org.apache.shardingsphere.test.natived.proxy.transactions.base.SeataTest's NativeTest will cause connection leaks and destroy the unit test of SS JDBC, which is too outrageous. - update in 2025.01.15: First, we need to deal with #34358 . Otherwise, I won’t know what the missing GraalVM Reachability Meatdata is, and the log will be too messy.
- update in 2025.01.18: My understanding is that there is absolutely no way I can work on the current issue until graalvm/native-build-tools#650 is resolved.
- update in 2025.01.19: Seata's RM Client's behavior after destruction is very suspicious. I need to confirm something else.
[INFO] Running org.apache.shardingsphere.test.natived.jdbc.transactions.base.SeataTest
[ERROR] 2025-01-19 11:44:05.205 [main] o.a.s.config.ConfigurationFactory - failed to load non-spring configuration :not found service provider for : org.apache.seata.config.ConfigurationProvider
org.apache.seata.common.loader.EnhancedServiceNotFoundException: not found service provider for : org.apache.seata.config.ConfigurationProvider
[ERROR] 2025-01-19 11:44:05.427 [AsyncWorker_1_1_2] o.a.seata.rm.datasource.AsyncWorker - Failed to batch delete undo log
org.postgresql.util.PSQLException: An I/O error occurred while sending to the backend.
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:398)
at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:502)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:419)
at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:194)
at org.postgresql.jdbc.PgPreparedStatement.executeUpdate(PgPreparedStatement.java:155)
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java)
at org.apache.seata.rm.datasource.undo.AbstractUndoLogManager.batchDeleteUndoLog(AbstractUndoLogManager.java:179)
at org.apache.seata.rm.datasource.AsyncWorker.deleteUndoLog(AsyncWorker.java:182)
at org.apache.seata.rm.datasource.AsyncWorker.dealWithGroupedContexts(AsyncWorker.java:162)
at java.base/java.util.HashMap.forEach(HashMap.java:1429)
at org.apache.seata.rm.datasource.AsyncWorker.doBranchCommit(AsyncWorker.java:125)
at org.apache.seata.rm.datasource.AsyncWorker.doBranchCommitSafely(AsyncWorker.java:107)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:1570)
Caused by: java.io.EOFException: null
at org.postgresql.core.PGStream.receiveChar(PGStream.java:469)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2166)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:371)
... 19 common frames omitted
[ERROR] 2025-01-19 11:44:05.428 [AsyncWorker_1_1_2] o.a.seata.rm.datasource.AsyncWorker - Failed to rollback JDBC resource after deleting undo log failed
java.sql.SQLException: Connection is closed
at com.zaxxer.hikari.pool.ProxyConnection$ClosedConnection.lambda$getClosedConnection$0(ProxyConnection.java:515)
at jdk.proxy3/jdk.proxy3.$Proxy37.rollback(Unknown Source)
at com.zaxxer.hikari.pool.ProxyConnection.rollback(ProxyConnection.java:396)
at com.zaxxer.hikari.pool.HikariProxyConnection.rollback(HikariProxyConnection.java)
at org.apache.seata.rm.datasource.AsyncWorker.deleteUndoLog(AsyncWorker.java:189)
at org.apache.seata.rm.datasource.AsyncWorker.dealWithGroupedContexts(AsyncWorker.java:162)
at java.base/java.util.HashMap.forEach(HashMap.java:1429)
at org.apache.seata.rm.datasource.AsyncWorker.doBranchCommit(AsyncWorker.java:125)
at org.apache.seata.rm.datasource.AsyncWorker.doBranchCommitSafely(AsyncWorker.java:107)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:1570)
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 37.43 s -- in org.apache.shardingsphere.test.natived.jdbc.transactions.base.SeataTest
8747369 to
874d367
Compare
7 tasks
874d367 to
c65bd4e
Compare
7 tasks
397b6da to
fa36d01
Compare
7 tasks
31052ed to
a1987ee
Compare
a1987ee to
d31e332
Compare
strongduanmu
approved these changes
Jan 21, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
For #29052.
Changes proposed in this pull request:
Split nativeTest modules for JDBC and Proxy #34358create table if not existsfor Docker Imageghcr.io/fdcastel/firebird:5.0.1, see Create if not exists FirebirdSQL/firebird#8062ghcr.io/fdcastel/firebird:5.0.1does not work withDROP TABLE IF EXISTS, see DROP [IF EXISTS] ... [CORE3863] FirebirdSQL/firebird#4203ghcr.io/fdcastel/firebird:5.0.1cannot useTRUNCATE TABLE, see Add TRUNCATE TABLE [CORE2479] FirebirdSQL/firebird#2892Create Databasecannot be executed on the Firebird JDBC driver. Unit testing requires the use oforg.firebirdsql.management.FBManager.Before committing this PR, I'm sure that I have checked the following options:
./mvnw clean install -B -T1C -Dmaven.javadoc.skip -Dmaven.jacoco.skip -e.