class ScoutApm::LayerConverters::JobConverter
Attributes
meta_options[R]
Public Instance Methods
add_latency_metric!()
click to toggle source
This isn't stored as a specific layer, so grabbing it doesn't use the walker callbacks
# File lib/scout_apm/layer_converters/job_converter.rb, line 63 def add_latency_metric! latency = request.annotations[:queue_latency] || 0 meta = MetricMeta.new("Latency", meta_options) stat = MetricStats.new stat.update!(latency) @metrics[meta] = stat end
record!()
click to toggle source
# File lib/scout_apm/layer_converters/job_converter.rb, line 42 def record! return unless request.job? errors = request.error? ? 1 : 0 add_latency_metric! record = JobRecord.new( layer_finder.queue.name, layer_finder.job.name, layer_finder.job.total_call_time, layer_finder.job.total_exclusive_time, errors, @metrics ) @store.track_job!(record) record # this result must be returned so it can be accessed by transaction callback extensions end
register_hooks(walker)
click to toggle source
Calls superclass method
ScoutApm::LayerConverters::ConverterBase#register_hooks
# File lib/scout_apm/layer_converters/job_converter.rb, line 15 def register_hooks(walker) return unless request.job? super @metrics = Hash.new @meta_options = {:scope => layer_finder.job.legacy_metric_name} walker.on do |layer| next if layer == layer_finder.job next if layer == layer_finder.queue next if skip_layer?(layer) # we don't need to use the full metric name for scoped metrics as we # only display metrics aggregrated by type, just use "ActiveRecord" # or similar. metric_name = layer.type meta = MetricMeta.new(metric_name, meta_options) @metrics[meta] ||= MetricStats.new( meta_options.has_key?(:scope) ) stat = @metrics[meta] stat.update!(layer.total_call_time, layer.total_exclusive_time) end end