From 67012f4ae0c914473162d3d84d62e96dad2b3fc4 Mon Sep 17 00:00:00 2001
From: Yorick Peterse <yorickpeterse@gmail.com>
Date: Mon, 25 Jul 2016 15:45:04 +0200
Subject: [PATCH] Instrument Nokogiri parsing methods

This allows us to see how much time is being spent in just parsing
HTML/XML documents.
---
 CHANGELOG                      | 1 +
 config/initializers/metrics.rb | 7 +++++++
 2 files changed, 8 insertions(+)

diff --git a/CHANGELOG b/CHANGELOG
index 2f9b6e0da24..e741dbf374b 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -5,6 +5,7 @@ v 8.11.0 (unreleased)
   - Fix of 'Commits being passed to custom hooks are already reachable when using the UI'
   - Limit git rev-list output count to one in forced push check
   - Retrieve rendered HTML from cache in one request
+  - Nokogiri's various parsing methods are now instrumented
   - Make fork counter always clickable !5463 (winniehell)
   - Load project invited groups and members eagerly in ProjectTeam#fetch_members
   - Add GitLab Workhorse version to admin dashboard (Katarzyna Kobierska Ula Budziszewska)
diff --git a/config/initializers/metrics.rb b/config/initializers/metrics.rb
index c4266ab8ba5..f3cddac5b36 100644
--- a/config/initializers/metrics.rb
+++ b/config/initializers/metrics.rb
@@ -136,6 +136,13 @@ if Gitlab::Metrics.enabled?
     config.instrument_instance_methods(Rouge::Plugins::Redcarpet)
     config.instrument_instance_methods(Rouge::Formatters::HTMLGitlab)
 
+    [:XML, :HTML].each do |namespace|
+      namespace_mod = Nokogiri.const_get(namespace)
+
+      config.instrument_methods(namespace_mod)
+      config.instrument_methods(namespace_mod::Document)
+    end
+
     config.instrument_methods(Rinku)
   end
 
-- 
GitLab