2024/08/16分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
- SQLite3Adapter: Translate
SQLite3::BusyException
intoActiveRecord::StatementTimeout
. - Replace
SQLite3::Database#busy_timeout
with#busy_handler_timeout=
Merge pull request #52610 from Shopify/no_more_racc
Action Packの修正です。
journeyで使用するparserを生成するのにraccを使用していたのを、独自にparserを作成し、そちらを使用するよう修正しています。速度的には今とのころ特に変わらないのですが、raccを使用することなく最適化も出来そうなため、とのことです。
Merge pull request #52605 from Shopify/scope_with_keywords
actionpack/lib/action_dispatch/routing/mapper.rb
の修正です。
Mapper with keywordsと同様に、scopes
やresources
メソッド等で、メソッドの引数にkeyword引数を使用するよう修正しています。
Allow to eager load nested nil associations
activerecord/lib/active_record/associations/join_dependency.rb
の修正です。
nil
associationをeager loadした際にエラーになってしまうバグがあったのを修正しています。
Fix a typo in Application#name doc
railties/lib/rails/application.rb
のdocの修正です。
Application#name
メソッドのdoc内のタイポを修正しています。
actionpack/test/controller/resources_test.rb
の修正です。
使用していないrequireを削除しています。
Merge pull request #52378 from fatkodima/fix-batches-error_on_ignore
activerecord/lib/active_record/relation/batches.rb
の修正です。
BatchEnumerator
を使用してのbatch処理を行う際に、error_on_ignore
オプションが無視されてしまうバグがあったのを修正しています。
Store query caches in IsolatedExecutionState to avoid memory bloat
activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb
、
activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb
の修正です。
query cachesを格納するのにActiveSupport::IsolatedExecutionState
を使用するよう修正しています。元々はConcurrent::Map
を使用していたのですが、IsolatedExecutionState
にfiberを使用している場合にメモリが肥大化してしまう(cacheをクリアするタイミングが遅い)という問題があった為、ActiveSupport::IsolatedExecutionState
で管理するよう修正しています。
Don't hold on connection pools from the query cache
activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb
の修正です。
先のquey cahcesの改善により、ActiveRecord::ConnectionAdapters::QueryCache::Store
でconnection poolを保持するようになった(query cacheのversionを参照するよう)のですが、それだとconnection poolが解放されずRailsのCIでエラーになる、という問題が発生した為、connection poolは保持しないよう修正しています。
Translate SQLite3::BusyException into ActiveRecord::StatementTimeout
activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb
の修正です。
SQLite3 adapterでSQLite3::BusyException
が発生した場合、ActiveRecord::StatementTimeout
に変換するよう修正しています。他のtimeout系のexceptionと挙動を合わせる為。
guides/source/documents.yaml
の修正です。
Rails 7.2のリリース日を追加しています。
Hold query caches in a WeakKeyMap
activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb
、
activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb
の修正です。
query cachesを保持するのにWeakKeyMap
を使用するよう修正しています。元の実装だとConnectionPool
がGCされた際にquery cachesがGCされず残ってしまうという問題があった為。
activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb
の修正です。
SQLite3 adapterで、timeoutの指定にSQLite3::Database#busy_timeout
を使用していたのを、#busy_handler_timeout=
を使用するよう修正しています。busy_handler_timeout
の方はnon-GVL-blocking、公平な再試行間隔が行われるビジーハンドラーが実装されているため、との事です。合わせて、busy_handler_timeout
では指定が出来なくなっているretries
オプションをdeprecatedにしています。
参考:Add a busy_handler_timeout setter
Remove Rubocop offense in config/initializers/assets.rb
railties/lib/rails/generators/rails/app/templates/config/initializers/assets.rb.tt
の修正です。
Rubocopのチェックでエラーになるコードがあったのを修正しています。