summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorYorick Peterse <yorickpeterse@gmail.com>2015-12-10 16:25:28 +0100
committerYorick Peterse <yorickpeterse@gmail.com>2015-12-17 17:25:48 +0100
commit641761f1d6af5a94c0007e8d7463ee86fc047229 (patch)
treefb93d01f675fe706cfec0912b4baff839c25dd24 /lib
parentf43f3b89a633b5ceee4e71acba0c83ed5cb28963 (diff)
downloadgitlab-ce-641761f1d6af5a94c0007e8d7463ee86fc047229.tar.gz
Only instrument methods defined directly
When using instrument_methods/instrument_instance_methods we only want to instrument methods defined directly in a class, not those included via mixins (e.g. whatever RSpec throws in during development). In case an externally included method _has_ to be instrumented we can still use the regular instrument_method/instrument_instance_method methods.
Diffstat (limited to 'lib')
-rw-r--r--lib/gitlab/metrics/instrumentation.rb10
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/gitlab/metrics/instrumentation.rb b/lib/gitlab/metrics/instrumentation.rb
index 8822a907967..cf22aa93cdd 100644
--- a/lib/gitlab/metrics/instrumentation.rb
+++ b/lib/gitlab/metrics/instrumentation.rb
@@ -36,7 +36,9 @@ module Gitlab
# mod - The module to instrument.
def self.instrument_methods(mod)
mod.public_methods(false).each do |name|
- instrument_method(mod, name)
+ method = mod.method(name)
+
+ instrument_method(mod, name) if method.owner == mod.singleton_class
end
end
@@ -45,7 +47,9 @@ module Gitlab
# mod - The module to instrument.
def self.instrument_instance_methods(mod)
mod.public_instance_methods(false).each do |name|
- instrument_instance_method(mod, name)
+ method = mod.instance_method(name)
+
+ instrument_instance_method(mod, name) if method.owner == mod
end
end
@@ -77,7 +81,7 @@ module Gitlab
if trans
start = Time.now
- retval =
+ retval = __send__(#{alias_name.inspect}, *args, &block)
duration = (Time.now - start) * 1000.0
trans.add_metric(Gitlab::Metrics::Instrumentation::SERIES,