From c56f702ec3806606459e4edc3de097f1bb6baf4e Mon Sep 17 00:00:00 2001 From: Yorick Peterse Date: Fri, 8 Apr 2016 17:54:52 +0200 Subject: Instrument Rails cache code This allows us to track how much time of a transaction is spent in dealing with cached data. --- lib/gitlab/metrics/subscribers/rails_cache.rb | 39 +++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 lib/gitlab/metrics/subscribers/rails_cache.rb (limited to 'lib') diff --git a/lib/gitlab/metrics/subscribers/rails_cache.rb b/lib/gitlab/metrics/subscribers/rails_cache.rb new file mode 100644 index 00000000000..49e5f86e6e6 --- /dev/null +++ b/lib/gitlab/metrics/subscribers/rails_cache.rb @@ -0,0 +1,39 @@ +module Gitlab + module Metrics + module Subscribers + # Class for tracking the total time spent in Rails cache calls + class RailsCache < ActiveSupport::Subscriber + attach_to :active_support + + def cache_read(event) + increment(:cache_read_duration, event.duration) + end + + def cache_write(event) + increment(:cache_write_duration, event.duration) + end + + def cache_delete(event) + increment(:cache_delete_duration, event.duration) + end + + def cache_exist?(event) + increment(:cache_exists_duration, event.duration) + end + + def increment(key, duration) + return unless current_transaction + + current_transaction.increment(:cache_duration, duration) + current_transaction.increment(key, duration) + end + + private + + def current_transaction + Transaction.current + end + end + end + end +end -- cgit v1.2.1