Class: ScoutApm::RequestQueueTime
- Inherits:
-
LayerConverterBase
- Object
- LayerConverterBase
- ScoutApm::RequestQueueTime
- Defined in:
- lib/scout_apm/request_queue_time.rb
Constant Summary collapse
- HEADERS =
%w(X-Queue-Start X-Request-Start X-QUEUE-START X-REQUEST-START x-queue-start x-request-start)
Instance Attribute Summary
Attributes inherited from LayerConverterBase
#request, #root_layer, #walker
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(request) ⇒ RequestQueueTime
constructor
Headers is a hash of request headers.
Methods inherited from LayerConverterBase
Constructor Details
#initialize(request) ⇒ RequestQueueTime
Headers is a hash of request headers. In Rails, request.headers would be appropriate
6 7 8 9 |
# File 'lib/scout_apm/request_queue_time.rb', line 6 def initialize(request) super(request) @headers = request.headers end |
Instance Method Details
#call ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/scout_apm/request_queue_time.rb', line 11 def call return {} unless headers raw_start = return {} unless raw_start parsed_start = parse(raw_start) return {} unless parsed_start request_start = root_layer.start_time queue_time = (request_start - parsed_start).to_f # If we end up with a negative value, just bail out and don't report anything return {} if queue_time < 0 = MetricMeta.new("QueueTime/Request", {:scope => scope_layer.legacy_metric_name}) stat = MetricStats.new(true) stat.update!(queue_time) { => stat } end |