aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
diff options
context:
space:
mode:
authorMatthew Draper <matthew@trebex.net>2016-10-27 15:31:22 -0500
committerMatthew Draper <matthew@trebex.net>2016-10-27 15:31:22 -0500
commit007e50d8e5a900547471b6c4ec79d9d217682c5d (patch)
treeaaf2b0ed25402f12cb714aba3946b0b343016366 /activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
parent928f46621c115c41802d9bbafa29df46c85ae68f (diff)
downloadrails-007e50d8e5a900547471b6c4ec79d9d217682c5d.tar.gz
rails-007e50d8e5a900547471b6c4ec79d9d217682c5d.tar.bz2
rails-007e50d8e5a900547471b6c4ec79d9d217682c5d.zip
Permit loads while queries are running
A query may wait on a database-level lock, which could lead to a deadlock between threads.
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb')
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb6
1 files changed, 5 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
index 8d0a1c0842..3bee0e2c62 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
@@ -215,7 +215,11 @@ module ActiveRecord
# Executes the SQL statement in the context of this connection.
def execute(sql, name = nil)
- log(sql, name) { @connection.query(sql) }
+ log(sql, name) do
+ ActiveSupport::Dependencies.interlock.permit_concurrent_loads do
+ @connection.query(sql)
+ end
+ end
end
# Mysql2Adapter doesn't have to free a result after using it, but we use this method