aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
diff options
context:
space:
mode:
authorMatthew Draper <matthew@trebex.net>2017-11-25 16:05:13 +1030
committerMatthew Draper <matthew@trebex.net>2017-11-26 15:12:50 +1030
commit9027fafff6da932e6e64ddb828665f4b01fc8902 (patch)
tree8099cb670482a0b44e39d68a3f69fb83ce6511f5 /activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
parent2ec9c532cbbdbe636a17411db3f9de47ca6a81c1 (diff)
downloadrails-9027fafff6da932e6e64ddb828665f4b01fc8902.tar.gz
rails-9027fafff6da932e6e64ddb828665f4b01fc8902.tar.bz2
rails-9027fafff6da932e6e64ddb828665f4b01fc8902.zip
Flush idle database connections
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/abstract_adapter.rb')
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract_adapter.rb8
1 files changed, 8 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
index 7e6db860dd..95e808648c 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
@@ -105,6 +105,7 @@ module ActiveRecord
@logger = logger
@config = config
@pool = nil
+ @idle_since = Concurrent.monotonic_time
@schema_cache = SchemaCache.new self
@quoted_column_names, @quoted_table_names = {}, {}
@visitor = arel_visitor
@@ -164,6 +165,7 @@ module ActiveRecord
"Current thread: #{Thread.current}."
end
+ @idle_since = Concurrent.monotonic_time
@owner = nil
else
raise ActiveRecordError, "Cannot expire connection, it is not currently leased."
@@ -183,6 +185,12 @@ module ActiveRecord
end
end
+ # Seconds since this connection was returned to the pool
+ def seconds_idle # :nodoc:
+ return 0 if in_use?
+ Concurrent.monotonic_time - @idle_since
+ end
+
def unprepared_statement
old_prepared_statements, @prepared_statements = @prepared_statements, false
yield