16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# File 'lib/datadog/tracing/contrib/rack/trace_proxy_middleware.rb', line 16
def call(env, configuration)
return yield unless configuration[:request_queuing]
start_time = Contrib::Rack::QueueTime.get_request_start(env)
return yield unless start_time
options = {
service: configuration[:web_service_name],
start_time: start_time,
type: Tracing::Metadata::Ext::HTTP::TYPE_PROXY
}
request_span = Tracing.trace(Ext::SPAN_HTTP_PROXY_REQUEST, **options)
request_span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT_HTTP_PROXY)
request_span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_HTTP_PROXY_REQUEST)
request_span.set_tag(Tracing::Metadata::Ext::TAG_KIND, Tracing::Metadata::Ext::SpanKind::TAG_PROXY)
queue_span = Tracing.trace(Ext::SPAN_HTTP_PROXY_QUEUE, **options)
queue_span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT_HTTP_PROXY)
queue_span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_HTTP_PROXY_QUEUE)
queue_span.set_tag(Tracing::Metadata::Ext::TAG_KIND, Tracing::Metadata::Ext::SpanKind::TAG_PROXY)
Contrib::Analytics.set_measured(queue_span)
queue_span.finish
yield.tap { request_span.finish }
end
|