From cccb9988002f7b44133c089654b417ae9808b65f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Mon, 11 Jan 2010 23:27:43 +0100 Subject: [PATCH] Expose connections available in the connection pool. --- .../connection_adapters/abstract/connection_pool.rb | 2 +- .../lib/active_record/connection_adapters/mysql_adapter.rb | 2 ++ activerecord/test/cases/pooled_connections_test.rb | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb b/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb index 377f2a44c5..bf8c546d2e 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb @@ -56,7 +56,7 @@ module ConnectionAdapters # * +wait_timeout+: number of seconds to block and wait for a connection # before giving up and raising a timeout error (default 5 seconds). class ConnectionPool - attr_reader :spec + attr_reader :spec, :connections # Creates a new ConnectionPool object. +spec+ is a ConnectionSpecification # object which describes database connection information (e.g. adapter, diff --git a/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb b/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb index fa28bc64df..8c0bf6396a 100644 --- a/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb @@ -579,6 +579,8 @@ def limited_update_conditions(where_sql, quoted_table_name, quoted_primary_key) protected def translate_exception(exception, message) + return super unless exception.respond_to?(:errno) + case exception.errno when 1062 RecordNotUnique.new(message, exception) diff --git a/activerecord/test/cases/pooled_connections_test.rb b/activerecord/test/cases/pooled_connections_test.rb index 2529a33dab..4e54079ba5 100644 --- a/activerecord/test/cases/pooled_connections_test.rb +++ b/activerecord/test/cases/pooled_connections_test.rb @@ -61,12 +61,14 @@ def test_pooled_connection_checkin_one checkout_checkin_connections 1, 2 assert_equal 2, @connection_count assert_equal 0, @timed_out + assert_equal 1, ActiveRecord::Base.connection_pool.connections.size end def test_pooled_connection_checkin_two checkout_checkin_connections 2, 3 assert_equal 3, @connection_count assert_equal 0, @timed_out + assert_equal 1, ActiveRecord::Base.connection_pool.connections.size end def test_pooled_connection_checkout_existing_first -- GitLab