diff options
author | Matthew Draper <matthew@trebex.net> | 2016-10-27 15:31:22 -0500 |
---|---|---|
committer | Matthew Draper <matthew@trebex.net> | 2016-10-27 15:31:22 -0500 |
commit | 007e50d8e5a900547471b6c4ec79d9d217682c5d (patch) | |
tree | aaf2b0ed25402f12cb714aba3946b0b343016366 /activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb | |
parent | 928f46621c115c41802d9bbafa29df46c85ae68f (diff) | |
download | rails-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.rb | 8 |
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 |