提交 0210c44c 编写于 作者: A Aaron Patterson

make sure connections returned after close are marked as in_use

上级 7f40b9cd
......@@ -235,6 +235,8 @@ def checkin(conn)
conn.run_callbacks :checkin do
conn.expire
end
release conn
end
end
......@@ -246,10 +248,7 @@ def remove(conn)
# FIXME: we might want to store the key on the connection so that removing
# from the reserved hash will be a little easier.
thread_id = @reserved_connections.keys.find { |k|
@reserved_connections[k] == conn
}
@reserved_connections.delete thread_id if thread_id
release conn
end
end
......@@ -267,6 +266,20 @@ def reap
private
def release(conn)
thread_id = nil
if @reserved_connections[current_connection_id] == conn
thread_id = current_connection_id
else
thread_id = @reserved_connections.keys.find { |k|
@reserved_connections[k] == conn
}
end
@reserved_connections.delete thread_id if thread_id
end
def new_connection
ActiveRecord::Base.send(spec.adapter_method, spec.config)
end
......
......@@ -31,6 +31,16 @@ def active_connections(pool)
pool.connections.find_all(&:in_use?)
end
def test_checkout_after_close
connection = pool.connection
assert connection.in_use?
connection.close
assert !connection.in_use?
assert pool.connection.in_use?
end
def test_released_connection_moves_between_threads
thread_conn = nil
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册