なるようになるブログ

読書感想文かrailsについてかrubyについてか

rails commit log流し読み(2024/02/08)

2024/02/08分のコミットです。

CHANGELOGにのったコミットは以下の通りです。

activerecord/CHANGELOG.md


Fix a reace condition in FutureResult#instrument

activerecord/lib/active_record/future_result.rbの修正です。

ActiveRecord::FutureResult#instrumentでeventのrecordが完全に完了してからeventのリストにeventを追加するよう修正しています。不完全な状態でflushされてしまうのを避けるため。


Share already loaded fixtures across test classes

activerecord/lib/active_record/test_fixtures.rbの修正です。

load済みのfixturesを異なるテストクラス間で共有出来るよう修正しています。


Gracefully handle transactional fixtures leaks

activerecord/lib/active_record/test_fixtures.rbの修正です。

fixtureのteardown処理で、transactionのrollbackがエラーになった場合、load済みのfixtureのキャッシュを破棄、及び、connectionの切断を行うよう修正しています。rollbackでエラーになるのはfixtureロード後にスキーマが変更されたような場合であり、fixtureの再ロードが必要なはずなのでキャッシュを破棄するようにしています。


Properly synchronize Mysql2Adapter#active? and TrilogyAdapter#active?

Active Recordの修正です。

MySQL2 adapter、及び、TrilogyAdapterでactive?disconnect!及びverify!メソッドにスレッドの排他制御を行うよう修正しています。通常connectionはスレッド間で共有されないので排他制御は無くても問題無いはずなのですが、transactional tests及びsystem tests実行時に問題になる為、排他制御を追加したとの事です。