提交 29d2040b 编写于 作者: A Aaron Patterson

AbstractAdapter#close can be called to add the connection back to the

pool.
上级 ce3d8d64
......@@ -275,6 +275,7 @@ def checkout_new_connection
raise ConnectionNotEstablished unless @automatic_reconnect
c = new_connection
c.pool = self
@connections << c
c
end
......
......@@ -53,23 +53,25 @@ class AbstractAdapter
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 @@ def current_savepoint_name
"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 = [])
......
......@@ -33,6 +33,22 @@ def test_expire_mutates_in_use
adapter.expire
assert !adapter.in_use?, 'adapter is in use'
end
def test_close
pool = ConnectionPool.new(Base::ConnectionSpecification.new({}, nil))
pool.connections << adapter
adapter.pool = pool
# Make sure the pool marks the connection in use
assert_equal adapter, pool.connection
assert adapter.in_use?
# Close should put the adapter back in the pool
adapter.close
assert !adapter.in_use?
assert_equal adapter, pool.connection
end
end
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册