BoneCP не восстанавливается после разрыва соединения

У меня проблема с BoneCP (0.7.1 RELEASE). Я думаю, что BoneCP.getConnection() гарантирует, что он вернет объект Connection, предполагая, что БД жива.

Вот как я настроил свой пул

private void setupConnectionPool() throws SQLException
{
    // setup the connection pool
    String connectUri = "jdbc:mysql://master-mysql:3306/base?zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&useCompression=true";

    BoneCPConfig config = new BoneCPConfig();
    config.setJdbcUrl(connectUri);
    config.setUsername("dbapp");
    config.setPassword("meh");
    config.setMinConnectionsPerPartition(5);
    config.setMaxConnectionsPerPartition(10);
    config.setPartitionCount(1);
    config.setConnectionTimeoutInMs(5 * 1000);

    this.connectionPool = new BoneCP(config); // setup the connection pool
}

то где-то в коде я использую это так

    // I'm using Apache DbUtils
    QueryRunner run = new QueryRunner();
    Object result = run.query(this.connectionPool.getConnection(), query, handler, start, limit);

Попытка выполнить этот запрос выдает SQLException с состоянием 08S01 (сбой канала связи).

Последующий вызов this.connectionPool.getConnection() возвращает хорошее соединение.

Но разве это не цель пула соединений, чтобы мне не приходилось самому обрабатывать случаи потери соединения?


person expert    schedule 30.11.2012    source источник


Ответы (1)


  1. Он должен захватить 08S01 и уничтожить все соединения в пуле. Однако, если у вас есть несколько потоков, у вас может быть поток, который уже проверил соединение, которое может завершиться ошибкой (остальные соединения должны снова стать ОК).

  2. Попробуйте 0.8.0-beta3-SNAPSHOT; Совсем недавно я подчистил эту реализацию и добавил несколько тестов на надежность, проверяющих различные сценарии, в том числе 08S01.

person wwadge    schedule 30.11.2012
comment
Спасибо! Мой образец приложения является однопоточным. Где я могу скачать предкомпилированную банку? На сайте только 0.7.1. - person expert; 01.12.2012
comment
Здесь: oss.sonatype.org /content/repositories/snapshots/com/jolbox/ - person wwadge; 01.12.2012
comment
(0.8.0-beta4, версия без моментальных снимков, скоро появится в Maven Central) - person wwadge; 01.12.2012