Details
-
Task
-
Status: Open (View Workflow)
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
Description
MariaDB Connector/J cannot connect to a database when running as a GraalVM native image.
The driver's internal configuration system uses reflection to map JDBC URL properties to Configuration$Builder setter methods at runtime.
GraalVM's AOT compiler removes those methods during the native image build since they are not declared in any reflect-config.json, causing a hard NoSuchMethodException on the first connection attempt.
This task covers both fixing the root cause and adding a CI job to prevent future regressions.
current exception:
Caused by: java.lang.IllegalArgumentException: Unexpected error while mapping properties
at org.mariadb.jdbc.Configuration.mapPropertiesToOption(Configuration.java:839)
at org.mariadb.jdbc.Configuration.parseInternal(Configuration.java:758)
Caused by: java.lang.NoSuchMethodException:
org.mariadb.jdbc.Configuration$Builder.password(java.lang.String)
at java.base/java.lang.Class.getDeclaredMethod(DynamicHub.java:1168)
at org.mariadb.jdbc.Configuration.handleStringField(Configuration.java:900)
at org.mariadb.jdbc.Configuration.setFieldValue(Configuration.java:888)
at org.mariadb.jdbc.Configuration.processProperty(Configuration.java:875)
graal has dedicated configuration file : https://github.com/oracle/graalvm-reachability-metadata/blob/master/metadata/org.mariadb.jdbc/mariadb-java-client/3.5.2/reachability-metadata.json
but there is some missing part there.