こんにちは、おはようございます、こんばんは、スマートバンクで顧客体験チームのエンジニアリングマネージャーをしている佐藤(@tmnbst)です。 Rails 7.1 以降 では、SELECTクエリが内部的に自動でリトライされる仕組みが導入されています。 このリトライ処理は、allow_retry という内部フラグによって制御されており、Railsが「これは安全(冪等)なクエリだ」と判断した場合に場合にのみ有効になります。 普段Railsを使っているだけではなかなか気づけないこの仕様ですが、ネットワーク切断やDBのフェイルオーバー時などの場面で効果を発揮します。 この記事では、Railsのコードを読みながら allow_retry の仕組みを紐解き、実際にどんな条件でリトライされるのかを検証してみます。 1. allow_retry とは何か 2. 内部処理解説 to_sql_and_bind
