MariaDB Connector J:对于基本Faillover,autoReconnect不起作用

时间:2019-04-19 07:24:33

标签: jdbc mariadb driver mysql-connector

https://mariadb.com/kb/en/library/about-mariadb-connector-j/,对于选项autoReconnect,当不使用故障转移和负载平衡模式时启用此参数时,连接器将在失败后仅尝试重新连接到其主机。这称为基本故障转移。

但是问题是服务器故障后重新连接无法正常工作。测试代码如下:

@Test
public void waitTimeoutResultSetTest() throws SQLException, InterruptedException {

    try (Connection connection = setBlankConnection("&autoReconnect=true")) {
        Statement stmt = connection.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT 1");
    assertTrue(rs.next());

    stmt.execute("set session wait_timeout=1");

    Thread.sleep(3000); // Wait for the server to kill the connection

    try {
       rs = stmt.executeQuery("show databases;");
       assertTrue(rs.next());

       System.out.println("position 1");
    } catch (SQLException e) {
      //normal exception
      System.out.println("position 2");
    }
    }
}

使用autoReconnect,我认为预期的结果是它将到达位置1,但实际上它将到达位置2,例外情况是“对等连接重置:套接字写入错误。”

我的问题是基本故障转移不起作用,还是我的测试代码错误?我无法从网络上找到其他信息,如果您知道的话,可以请给我一些解释吗?

0 个答案:

没有答案