2017/04/13分のコミットです。
CHANGELOGへの追加はありませんでした。
Merge pull request #28712 from kamipo/tweaks_28678
activerecord/lib/active_record/schema_dumper.rb
の修正です。
schema.rbの先頭に表示するschemaのバージョンをフォーマットした値を表示するよう修正した、Merge pull request #28678 from hedgesky/use_formatted_number_as_schema_versionのフォローアップとして、
formatted_version
メソッドのコメントの内容が実際の結果と違っていたのを修正- version Stringの生成処理をメソッドに切り出し
- 重複していたガード処理を削除
を行っています。
Merge pull request #28726 from matthewd/transaction-locking
Active Recordの修正です。
DBトランザクション処理全体に対して、スレッドのロック処理を追加しています。
一部diff。
def begin_transaction(options = {}) - run_commit_callbacks = !current_transaction.joinable? - transaction = - if @stack.empty? - RealTransaction.new(@connection, options, run_commit_callbacks: run_commit_callbacks) - else - SavepointTransaction.new(@connection, "active_record_#{@stack.size}", options, - run_commit_callbacks: run_commit_callbacks) - end + @connection.lock.synchronize do + run_commit_callbacks = !current_transaction.joinable? + transaction = + if @stack.empty? + RealTransaction.new(@connection, options, run_commit_callbacks: run_commit_callbacks) + else + SavepointTransaction.new(@connection, "active_record_#{@stack.size}", options, + run_commit_callbacks: run_commit_callbacks) + end - @stack.push(transaction) - transaction + @stack.push(transaction) + transaction + end end
(@connection.lock
はMonitorクラスのインスタンス)
Merge pull request #28083 from eileencodes/ensure-test-threads-shared-db-connで、テスト実行時に異なるスレッドで同じDB connectionを使うようにしたになったのですが、その影響でデッドロックが発生する場合がある為、スレッドロックを追加したようです。
各ファイルの先頭から不要な空行を削除しています。