aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
diff options
context:
space:
mode:
authorMatthew Draper <matthew@trebex.net>2017-11-26 20:02:57 +1030
committerGitHub <noreply@github.com>2017-11-26 20:02:57 +1030
commit3ba20c7fa29b62fa5e39b234f970f93b755b8042 (patch)
treeb0099689812f2ab2ad93b828b1160ed37c985f8b /activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
parent4b2bbcf89787d8fd96fbf67675ba78a50a5d1570 (diff)
parent9027fafff6da932e6e64ddb828665f4b01fc8902 (diff)
downloadrails-3ba20c7fa29b62fa5e39b234f970f93b755b8042.tar.gz
rails-3ba20c7fa29b62fa5e39b234f970f93b755b8042.tar.bz2
rails-3ba20c7fa29b62fa5e39b234f970f93b755b8042.zip
Merge pull request #31221 from matthewd/flush-idle-connections
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 5411a6a262..8993c517a6 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