33module GraphQL
44 module Tracing
55 module DataDogTrace
6+ # @param tracer [#trace] Deprecated
67 # @param analytics_enabled [Boolean] Deprecated
78 # @param analytics_sample_rate [Float] Deprecated
8- def initialize ( tracer : nil , analytics_enabled : false , analytics_sample_rate : 1.0 , service : "ruby-graphql" , **rest )
9+ def initialize ( tracer : nil , analytics_enabled : false , analytics_sample_rate : 1.0 , service : nil , **rest )
910 if tracer . nil?
1011 tracer = defined? ( Datadog ::Tracing ) ? Datadog ::Tracing : Datadog . tracer
1112 end
1213 @tracer = tracer
1314
14- analytics_available = defined? ( Datadog ::Contrib ::Analytics ) \
15- && Datadog ::Contrib ::Analytics . respond_to? ( :enabled? ) \
16- && Datadog ::Contrib ::Analytics . respond_to? ( :set_sample_rate )
17-
18- @analytics_enabled = analytics_available && Datadog ::Contrib ::Analytics . enabled? ( analytics_enabled )
15+ @analytics_enabled = analytics_enabled
1916 @analytics_sample_rate = analytics_sample_rate
17+
2018 @service_name = service
2119 @has_prepare_span = respond_to? ( :prepare_span )
2220 super
@@ -34,12 +32,9 @@ def initialize(tracer: nil, analytics_enabled: false, analytics_sample_rate: 1.0
3432 } . each do |trace_method , trace_key |
3533 module_eval <<-RUBY , __FILE__ , __LINE__
3634 def #{ trace_method } (**data)
37- @tracer.trace("#{ trace_key } ", service: @service_name) do |span|
38- span.span_type = 'custom'
39- if defined?(Datadog::Tracing::Metadata::Ext) # Introduced in ddtrace 1.0
40- span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_COMPONENT, 'graphql')
41- span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_OPERATION, '#{ trace_method } ')
42- end
35+ @tracer.trace("#{ trace_key } ", service: @service_name, type: 'custom') do |span|
36+ span.set_tag('component', 'graphql')
37+ span.set_tag('operation', '#{ trace_method } ')
4338
4439 #{
4540 if trace_method == 'execute_multiplex'
@@ -54,10 +49,8 @@ def #{trace_method}(**data)
5449 end
5550 span . resource = resource if resource
5651
57- # For top span of query, set the analytics sample rate tag, if available.
58- if @analytics_enabled
59- Datadog ::Contrib ::Analytics . set_sample_rate ( span , @analytics_sample_rate )
60- end
52+ # [Deprecated] will be removed in the future
53+ span . set_metric ( '_dd1.sr.eausr' , @analytics_sample_rate ) if @analytics_enabled
6154 RUBY
6255 elsif trace_method == 'execute_query'
6356 <<-RUBY
@@ -89,12 +82,10 @@ def execute_field_span(span_key, query, field, ast_node, arguments, object)
8982 nil
9083 end
9184 if platform_key && trace_field
92- @tracer.trace(platform_key, service: @service_name) do |span|
93- span.span_type = 'custom'
94- if defined?(Datadog::Tracing::Metadata::Ext) # Introduced in ddtrace 1.0
95- span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_COMPONENT, 'graphql')
96- span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_OPERATION, span_key)
97- end
85+ @tracer.trace(platform_key, service: @service_name, type: 'custom') do |span|
86+ span.set_tag('component', 'graphql')
87+ span.set_tag('operation', span_key)
88+
9889 if @has_prepare_span
9990 prepare_span_data = { query: query, field: field, ast_node: ast_node, arguments: arguments, object: object }
10091 prepare_span(span_key, prepare_span_data, span)
@@ -125,12 +116,10 @@ def authorized(query:, type:, object:)
125116
126117 def authorized_span(span_key, object, type, query)
127118 platform_key = @platform_key_cache[DataDogTrace].platform_authorized_key_cache[type]
128- @tracer.trace(platform_key, service: @service_name) do |span|
129- span.span_type = 'custom'
130- if defined?(Datadog::Tracing::Metadata::Ext) # Introduced in ddtrace 1.0
131- span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_COMPONENT, 'graphql')
132- span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_OPERATION, span_key)
133- end
119+ @tracer.trace(platform_key, service: @service_name, type: 'custom') do |span|
120+ span.set_tag('component', 'graphql')
121+ span.set_tag('operation', span_key)
122+
134123 if @has_prepare_span
135124 prepare_span(span_key, {object: object, type: type, query: query}, span)
136125 end
@@ -158,12 +147,10 @@ def resolve_type_lazy(object:, type:, query:)
158147
159148 def resolve_type_span(span_key, object, type, query)
160149 platform_key = @platform_key_cache[DataDogTrace].platform_resolve_type_key_cache[type]
161- @tracer.trace(platform_key, service: @service_name) do |span|
162- span.span_type = 'custom'
163- if defined?(Datadog::Tracing::Metadata::Ext) # Introduced in ddtrace 1.0
164- span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_COMPONENT, 'graphql')
165- span.set_tag(Datadog::Tracing::Metadata::Ext::TAG_OPERATION, span_key)
166- end
150+ @tracer.trace(platform_key, service: @service_name, type: 'custom') do |span|
151+ span.set_tag('component', 'graphql')
152+ span.set_tag('operation', span_key)
153+
167154 if @has_prepare_span
168155 prepare_span(span_key, {object: object, type: type, query: query}, span)
169156 end
0 commit comments