Bug #85555 useConfigs Can't find configuration template named, in mysql-connector-java 6.x
Submitted: 21 Mar 2017 7:26 Modified: 21 Jun 2017 1:47
Reporter: Hao Yang Email Updates:
Status: Closed Impact on me:
None 
Category:Connector / J Severity:S5 (Performance)
Version:6.0.6 OS:Any
Assigned to: CPU Architecture:Any
Tags: useConfigs

[21 Mar 2017 7:26] Hao Yang
Description:
I use JDK8.

com.mysql.cj.core.conf.url.ConnectionUrl.getPropertiesFromConfigFiles(String configFiles)
try (InputStream configAsStream = Driver.class.getResourceAsStream("../configurations/" + configFile + ".properties"))

configAsStream === null

my test Code:
System.out.println(com.mysql.cj.jdbc.Driver.class.getClassLoader().getResourceAsStream("com/mysql/cj/jdbc/../configurations/maxPerformance.properties"));

System.out.println(com.mysql.cj.jdbc.Driver.class.getClassLoader().getResourceAsStream("com/mysql/cj/configurations/maxPerformance.properties"));

In mysql-connector-java 5.x is OK:
Properties com.mysql.jdbc.NonRegisteringDriver.parseURL(String url, Properties defaults)
    InputStream configAsStream = getClass().getResourceAsStream("configs/" + configName + ".properties");

How to repeat:
public static void main(String[] args) {
	com.mysql.cj.core.conf.url.ConnectionUrl.getPropertiesFromConfigFiles("maxPerformance");
}

Suggested fix:
com.mysql.cj.core.conf.url.ConnectionUrl.getPropertiesFromConfigFiles
"../configurations/" <== "/com/mysql/cj/configurations/"

try (InputStream configAsStream = Driver.class.getResourceAsStream("../configurations/" + configFile + ".properties"))

try (InputStream configAsStream = Driver.class.getResourceAsStream("/com/mysql/cj/configurations/" + configFile + ".properties"))
[21 Mar 2017 12:34] Chiranjeevi Battula
Hello Hao Yang,

Thank you for the bug report.
Verified this behavior on MySQL Connector / J 6.0.6.

Thanks,
Chiranjeevi.
[21 Jun 2017 1:47] Daniel So
Posted by developer:
 
Added the following entry to the Connector/J 8.0.7 changelog:

"Configuration templates named by the connection property useConfigs was not recognized by Connector/J."
[27 Jun 2017 8:17] Chiranjeevi Battula
http://bugs.mysql.com/bug.php?id=86833 marked as duplicate of this one.
[17 Oct 2018 18:06] Sam Ottenhoff
Same error observed with Connector/J 5.1.47. No issues observed with 5.1.46.

Caused by: java.sql.SQLException: Can't find configuration template named 'maxPerformance'
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861)
        at com.mysql.jdbc.NonRegisteringDriver.parseURL(NonRegisteringDriver.java:774)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:321)
        at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:112)
        at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:118)
        at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:358)
        at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201)
        at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:443)
        at com.zaxxer.hikari.pool.HikariPool.access$200(HikariPool.java:70)
        at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:630)
        at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:616)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)