diff options
author | jeffdoering <jdoering@alum.mit.edu> | 2019-06-13 11:23:13 -0700 |
---|---|---|
committer | Rafael França <rafaelmfranca@gmail.com> | 2019-06-13 14:23:13 -0400 |
commit | e2d11970f25890e8baa613bfa33e432bd693627b (patch) | |
tree | 775c7c1e04def3ef0371121cc2834b3f2b3ffb19 /activerecord/test/cases/pooled_connections_test.rb | |
parent | 136f730f8d5c2625b49ffff5e319f8170aa9af1a (diff) | |
download | rails-e2d11970f25890e8baa613bfa33e432bd693627b.tar.gz rails-e2d11970f25890e8baa613bfa33e432bd693627b.tar.bz2 rails-e2d11970f25890e8baa613bfa33e432bd693627b.zip |
Make ActiveRecord `ConnectionPool.connections` thread-safe. (#36473)
* Make ActiveRecord `ConnectionPool.connections` thread-safe.
ConnectionPool documentation is clear on the need to synchronize
access to @connections but also states that public methods do not
require synchronization. Existing code exposed @connections
directly via attr_reader. The fix uses synchronize() to lock
@connections then returns a copy to the caller using Array.dup().
Includes comments on the connections method that thread-safe access
to the connections array does not imply thread-safety of accessing
methods on the actual connections.
Adds a test-case that modifies the pool using a supported method
in one thread while a second thread accesses pool.connections.
The test fails without this patch.
Fixes #36465.
* Update activerecord/test/cases/connection_pool_test.rb
[jeffdoering + Rafael Mendonça França]
Diffstat (limited to 'activerecord/test/cases/pooled_connections_test.rb')
0 files changed, 0 insertions, 0 deletions