Skip to content
Snippets Groups Projects
Commit 60a6a240 authored by Yorick Peterse's avatar Yorick Peterse
Browse files

Improved last_relative_application_frame timings

The previous setup wasn't exactly fast, resulting in instrumented method
calls taking about 600 times longer than non instrumented calls
(including any ActiveSupport code involved). With this commit this
slowdown has been reduced to around 185 times.
parent 141e946c
No related branches found
No related tags found
No related merge requests found
module Gitlab
module Metrics
RAILS_ROOT = Rails.root.to_s
METRICS_ROOT = Rails.root.join('lib', 'gitlab', 'metrics').to_s
PATH_REGEX = /^#{RAILS_ROOT}\/?/
def self.pool_size
Settings.metrics['pool_size'] || 16
end
Loading
Loading
@@ -20,16 +24,15 @@ module Gitlab
@hostname
end
 
# Returns a relative path and line number based on the last application call
# frame.
def self.last_relative_application_frame
root = Rails.root.to_s
metrics = Rails.root.join('lib', 'gitlab', 'metrics').to_s
frame = caller_locations.find do |l|
l.path.start_with?(root) && !l.path.start_with?(metrics)
l.path.start_with?(RAILS_ROOT) && !l.path.start_with?(METRICS_ROOT)
end
 
if frame
return frame.path.gsub(/^#{Rails.root.to_s}\/?/, ''), frame.lineno
return frame.path.sub(PATH_REGEX, ''), frame.lineno
else
return nil, nil
end
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment