[CONJ-661] Intermittent NullPointerException in prepareStatement Created: 2018-11-15  Updated: 2020-03-21

Status: Open
Project: MariaDB Connector/J
Component/s: aurora, Failover
Affects Version/s: 2.3.0
Fix Version/s: None

Type: Bug Priority: Major
Reporter: Joseph Witthuhn Assignee: Diego Dupin
Resolution: Unresolved Votes: 0
Labels: None
Environment:

Amazon Linux
Java 8
Groovy 2.5.2



 Description   

I believe the fix for this issue is likely similar to these two commits that were made for CONJ-616:

We are connecting to an AWS Aurora RDS datasource using a connection string that looks like this:
jdbc:mariadb:aurora://XXXXX.cluster-XXXXX.us-east-1.rds.amazonaws.com:3306/XXXXX?socketTimeout=0&useSSL=true&connectTimeout=31000

After connecting successfully, we are occasionally getting this NullPointerException on calls to prepareStatement:

java.lang.NullPointerException: null
      at org.mariadb.jdbc.internal.failover.impl.MastersSlavesListener.noBackslashEscapes(MastersSlavesListener.java:294)
      at org.mariadb.jdbc.internal.failover.FailoverProxy.invoke(FailoverProxy.java:158)
      at com.sun.proxy.$Proxy18.noBackslashEscapes(Unknown Source)
      at org.mariadb.jdbc.MariaDbConnection.internalPrepareStatement(MariaDbConnection.java:535)
      at org.mariadb.jdbc.MariaDbConnection.prepareStatement(MariaDbConnection.java:350)
      at groovy.sql.Sql$CreatePreparedStatementCommand.execute(Sql.java:4604)
      at groovy.sql.Sql$CreatePreparedStatementCommand.execute(Sql.java:4582)
      at groovy.sql.Sql.getAbstractStatement(Sql.java:4421)
      at groovy.sql.Sql.getPreparedStatement(Sql.java:4436)
      at groovy.sql.Sql.getPreparedStatement(Sql.java:4525)
      at groovy.sql.Sql.eachRow(Sql.java:1282)
      at groovy.sql.Sql.eachRow(Sql.java:1376)
      at groovy.sql.Sql.eachRow(Sql.java:1435)
      at groovy.sql.Sql$eachRow.call(Unknown Source)

In this instance, our input into Groovy's eachRow method was:
sql: "SELECT table_name FROM information_schema.tables where table_schema=current_database() and lower(table_name)=?"
params: ["connection_data"]
closure: irrelevant, we weren't getting far enough into execution for the code to hit this parameter


Generated at Thu Feb 08 03:17:23 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.