aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.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/postgresql/database_statements.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/postgresql/database_statements.rb')
-rw-r--r--activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb8
1 files changed, 6 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb b/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb
index 092543259f..520a50506f 100644
--- a/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb
+++ b/activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb
@@ -85,7 +85,9 @@ module ActiveRecord
# Queries the database and returns the results in an Array-like object
def query(sql, name = nil) #:nodoc:
log(sql, name) do
- result_as_array @connection.async_exec(sql)
+ ActiveSupport::Dependencies.interlock.permit_concurrent_loads do
+ result_as_array @connection.async_exec(sql)
+ end
end
end
@@ -95,7 +97,9 @@ module ActiveRecord
# need it specifically, you may want consider the <tt>exec_query</tt> wrapper.
def execute(sql, name = nil)
log(sql, name) do
- @connection.async_exec(sql)
+ ActiveSupport::Dependencies.interlock.permit_concurrent_loads do
+ @connection.async_exec(sql)
+ end
end
end