Class: ScoutApm::LayerConverters::SlowJobConverter
- Inherits:
-
ConverterBase
- Object
- ConverterBase
- ScoutApm::LayerConverters::SlowJobConverter
- Defined in:
- lib/scout_apm/layer_converters/slow_job_converter.rb
Constant Summary
Constants inherited from ConverterBase
Instance Attribute Summary
Attributes inherited from ConverterBase
#context, #layer_finder, #request, #root_layer
Instance Method Summary collapse
-
#call ⇒ Object
Called by the set to force this to actually be created.
- #create_metrics ⇒ Object
- #job_layer ⇒ Object
-
#name ⇒ Object
ScoreItemSet API #.
- #queue_layer ⇒ Object
-
#record! ⇒ Object
Converter API #.
- #score ⇒ Object
- #skip_layer?(layer) ⇒ Boolean
- #span_trace ⇒ Object
Methods inherited from ConverterBase
#attach_backtraces, #initialize, #limited?, #make_meta_options, #make_meta_options_desc_hash, #make_meta_options_scope, #over_metric_limit?, #register_hooks, #scope_layer, #store_aggregate_metric, #store_backtrace, #store_specific_metric, #subscope_name, #subscoped?
Constructor Details
This class inherits a constructor from ScoutApm::LayerConverters::ConverterBase
Instance Method Details
#call ⇒ Object
Called by the set to force this to actually be created.
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/scout_apm/layer_converters/slow_job_converter.rb', line 29 def call return nil unless request.job? return nil unless layer_finder.queue return nil unless layer_finder.job context.slow_job_policy.stored!(request) # record the change in memory usage mem_delta = ScoutApm::Instruments::Process::ProcessMemory.new(context).rss_to_mb(request.capture_mem_delta!) timing_metrics, allocation_metrics = create_metrics unless ScoutApm::Instruments::Allocations::ENABLED allocation_metrics = {} end SlowJobRecord.new( context, queue_layer.name, job_layer.name, root_layer.stop_time, job_layer.total_call_time, job_layer.total_exclusive_time, request.context, timing_metrics, allocation_metrics, mem_delta, job_layer.total_allocations, score, limited?, span_trace ) end |
#create_metrics ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/scout_apm/layer_converters/slow_job_converter.rb', line 63 def create_metrics # Create a new walker, and wire up the subscope stuff walker = LayerConverters::DepthFirstWalker.new(self.root_layer) register_hooks(walker) metric_hash = Hash.new allocation_metric_hash = Hash.new walker.on do |layer| next if skip_layer?(layer) # The queue_layer is useful to capture for other reasons, but doesn't # create a MetricMeta/Stat of its own next if layer == queue_layer store_specific_metric(layer, metric_hash, allocation_metric_hash) store_aggregate_metric(layer, metric_hash, allocation_metric_hash) end # And now run through the walk we just defined walker.walk metric_hash = attach_backtraces(metric_hash) allocation_metric_hash = attach_backtraces(allocation_metric_hash) [metric_hash, allocation_metric_hash] end |
#job_layer ⇒ Object
93 |
# File 'lib/scout_apm/layer_converters/slow_job_converter.rb', line 93 def job_layer; layer_finder.job; end |
#name ⇒ Object
ScoreItemSet API #
25 |
# File 'lib/scout_apm/layer_converters/slow_job_converter.rb', line 25 def name; request.unique_name; end |
#queue_layer ⇒ Object
92 |
# File 'lib/scout_apm/layer_converters/slow_job_converter.rb', line 92 def queue_layer; layer_finder.queue; end |
#record! ⇒ Object
Converter API #
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/scout_apm/layer_converters/slow_job_converter.rb', line 11 def record! return nil unless request.job? @points = context.slow_job_policy.score(request) # Let the store know we're here, and if it wants our data, it will call # back into #call @store.track_slow_job!(self) nil # not returning anything in the layer results ... not used end |
#score ⇒ Object
26 |
# File 'lib/scout_apm/layer_converters/slow_job_converter.rb', line 26 def score; @points; end |
#skip_layer?(layer) ⇒ Boolean
91 |
# File 'lib/scout_apm/layer_converters/slow_job_converter.rb', line 91 def skip_layer?(layer); super(layer) || layer == queue_layer; end |
#span_trace ⇒ Object
95 96 97 98 99 |
# File 'lib/scout_apm/layer_converters/slow_job_converter.rb', line 95 def span_trace ScoutApm::LayerConverters::TraceConverter. new(@context, @request, @layer_finder, @store). call end |