aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2011-11-29 14:40:37 -0800
committerAaron Patterson <aaron.patterson@gmail.com>2011-11-29 14:40:37 -0800
commit29d2040b2992c112ca475a7a56bcd7f2016252ce (patch)
tree5d3e3937ee4b69f50e60aec18f95dc09dfb34184 /activerecord/lib/active_record
parentce3d8d646a7a4077907b1ec2bad5101840d989e5 (diff)
downloadrails-29d2040b2992c112ca475a7a56bcd7f2016252ce.tar.gz
rails-29d2040b2992c112ca475a7a56bcd7f2016252ce.tar.bz2
rails-29d2040b2992c112ca475a7a56bcd7f2016252ce.zip
AbstractAdapter#close can be called to add the connection back to the
pool.
Diffstat (limited to 'activerecord/lib/active_record')
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb1
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract_adapter.rb29
2 files changed, 19 insertions, 11 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 04465db61d..656073b47a 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb
@@ -275,6 +275,7 @@ module ActiveRecord
raise ConnectionNotEstablished unless @automatic_reconnect
c = new_connection
+ c.pool = self
@connections << c
c
end
diff --git a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
index ce3417ad94..1a4cc93d2d 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
@@ -53,23 +53,25 @@ module ActiveRecord
define_callbacks :checkout, :checkin
- attr_accessor :visitor
+ attr_accessor :visitor, :pool
attr_reader :schema_cache, :last_use, :in_use
alias :in_use? :in_use
- def initialize(connection, logger = nil) #:nodoc:
+ def initialize(connection, logger = nil, pool = nil) #:nodoc:
super()
- @active = nil
- @connection, @logger = connection, logger
+ @active = nil
+ @connection = connection
+ @in_use = false
+ @instrumenter = ActiveSupport::Notifications.instrumenter
+ @last_use = false
+ @logger = logger
+ @open_transactions = 0
+ @pool = pool
+ @query_cache = Hash.new { |h,sql| h[sql] = {} }
@query_cache_enabled = false
- @query_cache = Hash.new { |h,sql| h[sql] = {} }
- @open_transactions = 0
- @instrumenter = ActiveSupport::Notifications.instrumenter
- @visitor = nil
- @schema_cache = SchemaCache.new self
- @in_use = false
- @last_use = false
+ @schema_cache = SchemaCache.new self
+ @visitor = nil
end
def lease
@@ -256,6 +258,11 @@ module ActiveRecord
"active_record_#{open_transactions}"
end
+ # Check the connection back in to the connection pool
+ def close
+ pool.checkin self
+ end
+
protected
def log(sql, name = "SQL", binds = [])