On Sunday, December 20, 2015 at 4:53:41 PM UTC-8, Mike Pastore wrote:
>
> On Sun, Dec 20, 2015 at 1:28 PM, Jeremy Evans wrote:
>
>> On Saturday, December 19, 2015 at 11:27:25 AM UTC-8, Mike Pastore wrote:
>>>
>>> On a somewhat-related topic, I've noticed that after I bounce the MySQL 
>>> (MariaDB) server, requests start failing with:
>>>
>>> 2015-12-19 06:18:32 - Sequel::DatabaseDisconnectError - Mysql2::Error: 
>>> MySQL server has gone away:
>>>
>>>
>>> Even though MySQL is back online and ready to receive queries. I have to 
>>> restart Puma to get the workers to reinitialize their connections. Is there 
>>> a way to make the Sequel connection pool a little more robust so it handles 
>>> this situation better?
>>>
>>
>> You can use the connection_validator extension if you want to check 
>> connections before use.
>>
>
> That looks interesting. I will enable that in my application. Thank you.
>
> Is there any mechanism that would allow Sequel to catch a 
> Sequel::DatabaseDisconnectError (or a Mysql2::Error) and follow a logic 
> flow similar to connection_validator's to remove that connection from the 
> pool? 
>

Sequel automatically recognizes Sequel::DatabaseDisconnectError and removes 
the connection from the pool.  However, the error is reraised after the 
connection is removed, since it isn't safe to just retry.  You either need 
to use the connection_validator extension where the connection is validated 
before use, or you need to retry manually.  You can retry manually using 
the :retry_on=>Sequel::DatabaseDisconnectError option to 
Database#transaction, if you are sure that the entire transaction block is 
idempotent on transaction failure.

Thanks,
Jeremy

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.

Reply via email to