• J
    Make ActiveRecord `ConnectionPool.connections` thread-safe. (#36473) · 83248552
    jeffdoering 提交于
    * 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]
    83248552
connection_pool.rb 39.8 KB