Соединение mariadb в пуле автоматически закрывается через 20 минут? - PullRequest
0 голосов
/ 02 декабря 2018

Я использую mariadb-connector с hikari для подключения к mysql дБ.

В какой-то момент мне нужно отправить оператор LOAD DATA, поэтому развертывание соединения выполняется следующим образом:

public static Connection prepareConnection(DataSource ds) throws SQLException {
    java.sql.Connection con = DataSourceUtils.getConnection(ds);
    con.setAutoCommit(false);
    con.setAllowLoadLocalInfile(true);

    Statement st = (Statement) con.createStatement();
    st.executeQuery("SET unique_checks = 0");
    st.executeQuery("SET foreign_key_checks = 0");
    st.executeBatch();
    JdbcUtils.closeStatement(st);

    return con;
}

//preparing the LOAD DATA INFILE
MariaDbStatement loaddata = null;
if (ps.isWrapperFor(MariaDbStatement.class)) {
    loaddata = ps.unwrap(MariaDbStatement.class);
    loaddata.setLocalInfileInputStream(new ByteArrayInputStream(item.getBytes()));
}

Connection con = prepareConnection(ds);
//then using the con directly to send the loaddata statement

Проблема: я импортирую довольно большой файл, собираю операторы и фиксирую их вручную в виде фрагментов.Всегда примерно через 20 минут Connection (который я использую в течение всего импорта) уже закрывается.Вероятно, это связано с тем, что я использую соединение напрямую, и пул соединений hikari/mariadb, возможно, уже определил это?

Вопрос: какой параметр пула мог вызывать это?

2018-11-29 22:33:34.417  WARN 2200 --- [pool-3-thread-1] com.zaxxer.hikari.pool.ProxyConnection   : HikariPool-1 - Connection org.mariadb.jdbc.MariaDbConnection                                    @599e4925 marked as broken because of SQLSTATE(08000), ErrorCode(1220)

java.sql.SQLNonTransientConnectionException: (conn=1570) Connection is closed
        at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.get(ExceptionMapper.java:234) ~[mariadb-java-client-2.3.0.jar!/:na]
        at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.getException(ExceptionMapper.java:165) ~[mariadb-java-client-2.3.0.jar!/:na]
        at org.mariadb.jdbc.MariaDbStatement.executeExceptionEpilogue(MariaDbStatement.java:238) ~[mariadb-java-client-2.3.0.jar!/:na]
        at org.mariadb.jdbc.MariaDbStatement.executeInternal(MariaDbStatement.java:356) ~[mariadb-java-client-2.3.0.jar!/:na]
        at org.mariadb.jdbc.MariaDbStatement.execute(MariaDbStatement.java:407) ~[mariadb-java-client-2.3.0.jar!/:na]
        at org.mariadb.jdbc.MariaDbConnection.rollback(MariaDbConnection.java:76) ~[mariadb-java-client-2.3.0.jar!/:na]
        at com.zaxxer.hikari.pool.ProxyConnection.rollback(ProxyConnection.java:370) ~[HikariCP-3.2.0.jar!/:na]
        at com.zaxxer.hikari.pool.HikariProxyConnection.rollback(HikariProxyConnection.java) ~[HikariCP-3.2.0.jar!/:na]

Caused by: java.sql.SQLException: Connection is closed
        at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.cmdPrologue(AbstractQueryProtocol.java:1801) ~[mariadb-java-client-2.3.0.jar!/:na]
        at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:212) ~[mariadb-java-client-2.3.0.jar!/:na]
        at org.mariadb.jdbc.MariaDbStatement.executeInternal(MariaDbStatement.java:350) ~[mariadb-java-client-2.3.0.jar!/:na]
        ... 12 common frames omitted

Примечание: раньше я использовал mysql-connector, у которого не была эта проблема.Также с теми же настройками пула хикари.Таким образом, я предполагаю, что должна быть какая-то настройка mariadb-connector, которая может привести к закрытию основного соединения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...