Hi, basically what title says. Data connections test and crawlers work fine. I've tried enabling SSL, adding ''?enabledTLSProtocols=TLSv1.2' to connection string. Both did not help. CA on the rds is rds-ca-2019
. MariaDB version 10.6.16 option that requires SSL on server-side is disabled.
Here is the stack trace. I've seen there questions with exact same problem, but they are unanswered, maybe i will be more lucky.
2024-04-18 13:05:43,671 ERROR [main] glue.ProcessLauncher (Logging.scala:logError(94)): Exception in User Class
java.lang.RuntimeException: Failed to fetch data. Please check the logs in CloudWatch to get more details.
at d.com.amazonaws.services.glue.ml.dq.runner.AbstractDataQualityTaskRunner.loadData(AbstractDataQualityTaskRunner.scala:115)
at d.com.amazonaws.services.glue.ml.dq.runner.DataQualityEvaluationRunner.execute(DataQualityEvaluationRunner.scala:74)
at d.com.amazonaws.services.glue.ml.dq.runner.AbstractDataQualityTaskRunner.run(AbstractDataQualityTaskRunner.scala:47)
at d.com.amazonaws.services.glue.ml.dq.runner.DataQualityEvaluationRunner$.main(DataQualityEvaluationRunner.scala:287)
at DataQualityRulesetEvaluationScript$.main(DataQualityRulesetEvaluationScript.scala:5)
at DataQualityRulesetEvaluationScript.main(DataQualityRulesetEvaluationScript.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.amazonaws.services.glue.SparkProcessLauncherPlugin.invoke(ProcessLauncher.scala:52)
at com.amazonaws.services.glue.SparkProcessLauncherPlugin.invoke$(ProcessLauncher.scala:52)
at com.amazonaws.services.glue.ProcessLauncher$$anon$1.invoke(ProcessLauncher.scala:200)
at com.amazonaws.services.glue.ProcessLauncher.launch(ProcessLauncher.scala:315)
at com.amazonaws.services.glue.ProcessLauncher$.main(ProcessLauncher.scala:34)
at com.amazonaws.services.glue.ProcessLauncher.main(ProcessLauncher.scala)
Caused by: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64)
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:833)
at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:453)
at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246)
at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198)
at org.apache.spark.sql.jdbc.glue.GlueJDBCUtils$.$anonfun$createConnectionFactory$1(GlueJDBCUtils.scala:38)
at org.apache.spark.sql.jdbc.glue.GlueJDBCSource$.resolveTable(GlueJDBCSource.scala:43)
at org.apache.spark.sql.jdbc.glue.GlueJDBCSource$.createRelation(GlueJDBCSource.scala:30)
at com.amazonaws.services.glue.util.JDBCWrapper.tableDF(JDBCUtils.scala:892)
at com.amazonaws.services.glue.util.NoCondition$.tableDF(JDBCUtils.scala:88)
at com.amazonaws.services.glue.util.NoJDBCPartitioner$.tableDF(JDBCUtils.scala:174)
at com.amazonaws.services.glue.JDBCDataSource.getDynamicFrame(DataSource.scala:1014)
at com.amazonaws.services.glue.DataSource.getDynamicFrame(DataSource.scala:101)
at com.amazonaws.services.glue.DataSource.getDynamicFrame$(DataSource.scala:101)
at com.amazonaws.services.glue.AbstractSparkSQLDataSource.getDynamicFrame(DataSource.scala:725)
at d.com.amazonaws.services.glue.ml.dq.runner.AbstractDataQualityTaskRunner.$anonfun$loadData$2(AbstractDataQualityTaskRunner.scala:102)
at scala.util.Try$.apply(Try.scala:209)
at d.com.amazonaws.services.glue.ml.dq.runner.AbstractDataQualityTaskRunner.loadData(AbstractDataQualityTaskRunner.scala:87)
... 15 more
Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)
at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105)
at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151)
at com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167)
at com.mysql.cj.protocol.a.NativeProtocol.negotiateSSLConnection(NativeProtocol.java:342)
at com.mysql.cj.protocol.a.NativeAuthenticationProvider.connect(NativeAuthenticationProvider.java:167)
at com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1350)
at com.mysql.cj.NativeSession.connect(NativeSession.java:157)
at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:953)
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:823)
... 31 more
Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: protocol_version
at sun.security.ssl.Alert.createSSLException(Alert.java:131)
at sun.security.ssl.Alert.createSSLException(Alert.java:117)
at sun.security.ssl.TransportContext.fatal(TransportContext.java:318)
at sun.security.ssl.Alert$AlertConsumer.consume(Alert.java:293)
at sun.security.ssl.TransportContext.dispatch(TransportContext.java:185)
at sun.security.ssl.SSLTransport.decode(SSLTransport.java:152)
at sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1401)
at sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1309)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:440)
at com.mysql.cj.protocol.ExportControlled.performTlsHandshake(ExportControlled.java:317)
at com.mysql.cj.protocol.StandardSocketFactory.performTlsHandshake(StandardSocketFactory.java:188)
at com.mysql.cj.protocol.a.NativeSocketConnection.performTlsHandshake(NativeSocketConnection.java:97)
at com.mysql.cj.protocol.a.NativeProtocol.negotiateSSLConnection(NativeProtocol.java:333)
... 36 more
No, but i don't know which version JDBC driver uses, and MariaDB by default enables all versions. v2 seemed a good middle ground
Normally you should let the client and the server negotiate a version in common