diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2008-11-08 00:24:36 -0500 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2008-11-08 00:27:18 -0500 |
commit | dd77733f2fdb6dde2be7115fc31ad1dcbfccb5a1 (patch) | |
tree | 811d5568e5c4d2de4eb5f166987d8634723eacca /activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb | |
parent | 7c73518ef7cc49a4bee317e89c850b87ea1dea93 (diff) | |
download | rails-dd77733f2fdb6dde2be7115fc31ad1dcbfccb5a1.tar.gz rails-dd77733f2fdb6dde2be7115fc31ad1dcbfccb5a1.tar.bz2 rails-dd77733f2fdb6dde2be7115fc31ad1dcbfccb5a1.zip |
Timeout the connection pool monitor on ruby 1.8 only
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb | 14 |
1 files changed, 11 insertions, 3 deletions
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 cf760e334e..901b17124c 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb @@ -65,15 +65,23 @@ module ActiveRecord # The default ConnectionPool maximum size is 5. def initialize(spec) @spec = spec + # The cache of reserved connections mapped to threads @reserved_connections = {} + # The mutex used to synchronize pool access @connection_mutex = Monitor.new @queue = @connection_mutex.new_cond - # default 5 second timeout - @timeout = spec.config[:wait_timeout] || 5 + + # default 5 second timeout unless on ruby 1.9 + @timeout = + if RUBY_VERSION < '1.9' + spec.config[:wait_timeout] || 5 + end + # default max pool size to 5 @size = (spec.config[:pool] && spec.config[:pool].to_i) || 5 + @connections = [] @checked_out = [] end @@ -187,7 +195,7 @@ module ActiveRecord # try looting dead threads clear_stale_cached_connections! if @size == @checked_out.size - raise ConnectionTimeoutError, "could not obtain a database connection within #{@timeout} seconds. The pool size is currently #{@size}, perhaps you need to increase it?" + raise ConnectionTimeoutError, "could not obtain a database connection#{" within #{@timeout} seconds" if @timeout}. The max pool size is currently #{@size}; consider increasing it." end end end |