Description:
This happens with java version 1.7.0_55
When I try to establish a jdbc connection with a Fabric server, I get a ClassCastException when Fabric returns the group information.
How to repeat:
I am running this simple test:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
public class FabricSample {
private static final String url = "jdbc:mysql:fabric://192.168.70.100:8080/test?fabricUsername=admin&fabricPassword=admin";
private static final String user = "fabric";
private static final String password = "f4bric";
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws Exception {
Connection c = DriverManager.getConnection(url + "&fabricServerGroup=mycluster", user, password);
ResultSet rs = c.createStatement().executeQuery("select @@version as version");
rs.next();
System.out.println(rs.getString("version"));
}
}
And when I run it, I get this:
Exception in thread "main" java.sql.SQLException: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
at com.mysql.fabric.jdbc.FabricMySQLDriver.connect(FabricMySQLDriver.java:80)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at fabricsample.FabricSample.main(FabricSample.java:29)
Here is what the mysqlfabric utility prints about the group:
[vagrant@store ~]$ mysqlfabric group lookup_servers mycluster
Command :
{ success = True
return = [{'status': 'SECONDARY', 'server_uuid': '48203e5c-df8a-11e3-b486-0800274fb806', 'mode': 'READ_ONLY', 'weight': 1.0, 'address': '192.168.70.101'}, {'status': 'FAULTY', 'server_uuid': '4d42bb56-df8a-11e3-b486-0800274fb806', 'mode': 'READ_WRITE', 'weight': 1.0, 'address': '192.168.70.102'}, {'status': 'PRIMARY', 'server_uuid': '53d55f9d-df8a-11e3-b487-0800274fb806', 'mode': 'READ_WRITE', 'weight': 1.0, 'address': '192.168.70.103'}]
activities =
}