2024/03/14分のコミットです。
CHANGELOGへの追加はありませんでした。
Memoize key_provider
from key
or deterministic key_provider
if any
activerecord/lib/active_record/encryption/scheme.rb
の修正です。
Active Record Encryptionで、keyから取得したkey_provider
、及び、deterministic key_provider
をメモ化するよう修正しています。元々key_provider
はメモ化されていたのですが、Remove memoization to accept key_provider overridden by with_encryption_contextで、with_encryption_context
値をoverride出来るようにするためメモ化しないよう変更されていました。
しかし、key_provider
の作成処理はActiveSupport::KeyGenerator#generate_key
やOpenSSL::KDF.pbkdf2_hmac
などの比較的実行に時間が掛かる処理が含まれており、メモ化しないようにした対応によってテストの実行時間に影響が出ていました。そのため、可能な範囲でメモ化するよう対応を行っています。
Stablize ConnectionPoolTests#test_idle_timeout_configuration
activerecord/test/cases/connection_pool_test.rb
の修正です。
ConnectionPoolTests#test_idle_timeout_configuration
でtimeoutの動作確認用にインスタンス変数を変更する際の値を調整しています。テストが安定するようにする為。
Do not try to alias on key update when raw SQL is supplied
activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
の修正です。
MySQL adapterのbulk insert処理で、on_duplicate
オプションにraw SQLが指定された場合、key update処理でaliasの指定を行わないよう修正しています。不正なSQLが生成されてしまうのを避ける為。