У меня есть приложение Java / Vert.x, развернутое как контейнер Cloud Run. Работает нормально. Я пытался получить доступ к своему экземпляру Cloud SQL MySQL, но безрезультатно. Мое приложение зависает, как только я пытаюсь подключиться к экземпляру БД, создавая источник данных.
Мой контейнер Cloud Run связан с учетной записью службы с ролью Cloud SQL Client .
Я следовал учебному пособию по каноническому GCP здесь: https://cloud.google.com/sql/docs/mysql/connect-run Очевидно, меняются мои особенности. Ниже приведен код ошибки:
private static final String PW = "mypassword";
private static final String CONN_NAME = "/cloudsql/mydatabase-111222:us-west1:my-project";
private DataSource pool;
@Override
public void init() throws Exception {
LOGGER.info("MysqlRepo-init starting...");
// The configuration object specifies behaviors for the connection pool.
HikariConfig config = new HikariConfig();
LOGGER.info("MysqlRepo-init 1");
// Configure which instance and what database user to connect with.
config.setJdbcUrl(String.format("jdbc:mysql:///%s", "mydb"));
config.setUsername("root"); // e.g. "root", "postgres"
config.setPassword(PW); // e.g. "my-password"
// For Java users, the Cloud SQL JDBC Socket Factory can provide authenticated connections.
// See https://github.com/GoogleCloudPlatform/cloud-sql-jdbc-socket-factory for details.
config.addDataSourceProperty("socketFactory", "com.google.cloud.sql.mysql.SocketFactory");
config.addDataSourceProperty("cloudSqlInstance", CONN_NAME);
config.addDataSourceProperty("useSSL", "false");
LOGGER.info("MysqlRepo-init 2");
// Initialize the connection pool using the configuration object.
pool = new HikariDataSource(config);
LOGGER.info("MysqlRepo-init 3");
ResultSet rs = pool.getConnection().createStatement().executeQuery("SELECT COUNT(*) col FROM dual WHERE 1=1");
LOGGER.info("MysqlRepo-init Results = " + rs.getFetchSize());
LOGGER.info("...MysqlRepo-init done");
}
Мои журналы останавливаются на «MysqlRepo-init 2» (кроме этого я получаю Vertx предупреждения о том, что мой основной поток заблокирован).
Любые мысли о что мне может не хватать?