summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Speicher <robert@gitlab.com>2016-04-11 16:20:59 +0000
committerRobert Speicher <robert@gitlab.com>2016-04-11 16:20:59 +0000
commit7998725e3c2557c04ceece028dd73a316a3a746c (patch)
tree0e8186a9c3e104257dd00001a062074c0a410b55
parent8b7ce2adc8fb622ad153dad9ccbc4c47cb699a20 (diff)
parent935f913165b91467a70d9ba2b0ea29fad467db9d (diff)
downloadgitlab-ce-7998725e3c2557c04ceece028dd73a316a3a746c.tar.gz
Merge branch 'banzai-metrics' into 'master'
Instrument Banzai code See merge request !3659
-rw-r--r--config/initializers/metrics.rb23
-rw-r--r--lib/banzai/renderer.rb20
2 files changed, 35 insertions, 8 deletions
diff --git a/config/initializers/metrics.rb b/config/initializers/metrics.rb
index a9fc38fb04a..1b445bbbd10 100644
--- a/config/initializers/metrics.rb
+++ b/config/initializers/metrics.rb
@@ -75,6 +75,29 @@ if Gitlab::Metrics.enabled?
config.instrument_methods(const)
config.instrument_instance_methods(const)
end
+
+ # Instruments all Banzai filters
+ Dir[Rails.root.join('lib', 'banzai', 'filter', '*.rb')].each do |file|
+ klass = File.basename(file, File.extname(file)).camelize
+ const = Banzai::Filter.const_get(klass)
+
+ config.instrument_methods(const)
+ config.instrument_instance_methods(const)
+ end
+
+ config.instrument_methods(Banzai::ReferenceExtractor)
+ config.instrument_instance_methods(Banzai::ReferenceExtractor)
+
+ config.instrument_methods(Banzai::Renderer)
+ config.instrument_methods(Banzai::Querying)
+
+ [Issuable, Mentionable, Participable].each do |klass|
+ config.instrument_instance_methods(klass)
+ config.instrument_instance_methods(klass::ClassMethods)
+ end
+
+ config.instrument_methods(Gitlab::ReferenceExtractor)
+ config.instrument_instance_methods(Gitlab::ReferenceExtractor)
end
GC::Profiler.enable
diff --git a/lib/banzai/renderer.rb b/lib/banzai/renderer.rb
index ae714c87dc5..c14a9c4c722 100644
--- a/lib/banzai/renderer.rb
+++ b/lib/banzai/renderer.rb
@@ -19,8 +19,10 @@ module Banzai
cache_key = full_cache_key(cache_key, context[:pipeline])
if cache_key
- Rails.cache.fetch(cache_key) do
- cacheless_render(text, context)
+ Gitlab::Metrics.measure(:banzai_cached_render) do
+ Rails.cache.fetch(cache_key) do
+ cacheless_render(text, context)
+ end
end
else
cacheless_render(text, context)
@@ -64,13 +66,15 @@ module Banzai
private
def self.cacheless_render(text, context = {})
- result = render_result(text, context)
+ Gitlab::Metrics.measure(:banzai_cacheless_render) do
+ result = render_result(text, context)
- output = result[:output]
- if output.respond_to?(:to_html)
- output.to_html
- else
- output.to_s
+ output = result[:output]
+ if output.respond_to?(:to_html)
+ output.to_html
+ else
+ output.to_s
+ end
end
end