Пул соединений jruby activerecord-jdbc-adapter не переподключается после socketTimeout

Я использую jruby и версию mysql2 gem версии mysql2 (0.3.11). Моя база данных.yml выглядит примерно так.

production:

  <<: *common
  database: database
  host: host
  port: 3306
  username: username
  password: ********
  pool: 5
  pool_initial: true
  checkout_timeout: 0.3
     properties:
     connectTimeout: 250
     socketTimeout: 90000 

В моем случае один из запросов превысил время ожидания сокета 90 секунд, и после этого каждый из запросов, использующих одно и то же соединение из пула, начал давать сбой. Я ожидаю, что mysql2 должен переподключиться, но в моем случае он не переподключается. Я просмотрел документацию, но ничего не нашел.

Edit1: я немного отладил и использую activerecord-jdbc-adapter в производственной среде вместо драгоценного камня mysql2, и я попытался решить проблему с помощью autoReconnect: true, но похоже, что это не рекомендуется, поскольку это может привести к нарушению согласованности. http://pages.citebite.com/p4x3a0r8pmhm

Edit2: версия - jruby (1.7.4) и activerecord-jdbc-adapter (1.2.9.1)


person kamalkishor1991    schedule 19.03.2018    source источник
comment
Вы пытались добавить опцию reconnect: true в свой database.yml?   -  person Rustik    schedule 19.03.2018
comment
Да, я пробовал autoReconnect: верно, но похоже, что это не рекомендуется. pages.citebite.com/p4x3a0r8pmhm   -  person kamalkishor1991    schedule 19.03.2018


Ответы (1)


прежде всего, если вы используете JRuby, вы не можете использовать гем mysql2.

вы используете драйвер JDBC (жемчужина jdbc-mysql - вы правильно определили это).

reconnect: true должно было работать (сопоставляется со свойством autoReconnect: true), без повторного подключения пул AR, скорее всего, не обнаружит недопустимое соединение должным образом. на самом деле это может зависеть от версии Rails к версии, а также может считаться ошибкой activerecord-jdbc-adapter.

person kares    schedule 20.03.2018
comment
Я использую jruby-1.7.4, знаете ли вы, что это ошибка? Я не смог найти ни одной ошибки, о которой сообщалось в репозитории activerecord-jdbc-adapter. - person kamalkishor1991; 21.05.2018