Module: GraphQL::Tracing::NewRelicTrace
- Defined in:
- lib/graphql/tracing/new_relic_trace.rb
Instance Method Summary collapse
-
#begin_analyze_multiplex(multiplex, analyzers) ⇒ Object
-
#begin_authorized(type, obj, ctx) ⇒ Object
-
#begin_dataloader(dl) ⇒ Object
-
#begin_dataloader_source(source) ⇒ Object
-
#begin_execute_field(field, object, arguments, query) ⇒ Object
-
#begin_execute_multiplex(multiplex) ⇒ Object
-
#begin_parse(query_str) ⇒ Object
-
#begin_resolve_type(type, value, context) ⇒ Object
-
#begin_validate(query, validate) ⇒ Object
-
#dataloader_fiber_resume(source) ⇒ Object
-
#dataloader_fiber_yield(source) ⇒ Object
-
#end_analyze_multiplex(multiplex, analyzers) ⇒ Object
-
#end_authorized(type, obj, ctx, is_authed) ⇒ Object
-
#end_dataloader(dl) ⇒ Object
-
#end_dataloader_source(source) ⇒ Object
-
#end_execute_field(field, objects, arguments, query, result) ⇒ Object
-
#end_execute_multiplex(multiplex) ⇒ Object
-
#end_parse(query_str) ⇒ Object
-
#end_resolve_type(type, value, context, resolved_type) ⇒ Object
-
#end_validate(query, validate, validation_errors) ⇒ Object
-
#initialize(set_transaction_name: false, trace_authorized: true, trace_resolve_type: true, **_rest) ⇒ Object
Instance Method Details
#begin_analyze_multiplex(multiplex, analyzers) ⇒ Object
57 58 59 60 |
# File 'lib/graphql/tracing/new_relic_trace.rb', line 57 def begin_analyze_multiplex(multiplex, analyzers) @nr_analyze = NewRelic::Agent::Tracer.start_transaction_or_segment(partial_name: "GraphQL/analyze", category: :web) super end |
#begin_authorized(type, obj, ctx) ⇒ Object
92 93 94 95 96 97 |
# File 'lib/graphql/tracing/new_relic_trace.rb', line 92 def (type, obj, ctx) if @trace_authorized nr_segment_stack << NewRelic::Agent::Tracer.start_transaction_or_segment(partial_name: @nr_authorized_names[type], category: :web) end super end |
#begin_dataloader(dl) ⇒ Object
120 121 122 |
# File 'lib/graphql/tracing/new_relic_trace.rb', line 120 def begin_dataloader(dl) super end |
#begin_dataloader_source(source) ⇒ Object
128 129 130 131 |
# File 'lib/graphql/tracing/new_relic_trace.rb', line 128 def begin_dataloader_source(source) nr_segment_stack << NewRelic::Agent::Tracer.start_transaction_or_segment(partial_name: @nr_source_names[source], category: :web) super end |
#begin_execute_field(field, object, arguments, query) ⇒ Object
82 83 84 85 |
# File 'lib/graphql/tracing/new_relic_trace.rb', line 82 def begin_execute_field(field, object, arguments, query) nr_segment_stack << NewRelic::Agent::Tracer.start_transaction_or_segment(partial_name: @nr_field_names[field], category: :web) super end |
#begin_execute_multiplex(multiplex) ⇒ Object
67 68 69 70 71 72 73 74 75 |
# File 'lib/graphql/tracing/new_relic_trace.rb', line 67 def begin_execute_multiplex(multiplex) query = multiplex.queries.first set_this_txn_name = query.context[:set_new_relic_transaction_name] if set_this_txn_name || (set_this_txn_name.nil? && @set_transaction_name) NewRelic::Agent.set_transaction_name(transaction_name(query)) end @nr_execute = NewRelic::Agent::Tracer.start_transaction_or_segment(partial_name: "GraphQL/execute", category: :web) super end |
#begin_parse(query_str) ⇒ Object
37 38 39 40 |
# File 'lib/graphql/tracing/new_relic_trace.rb', line 37 def begin_parse(query_str) @nr_parse = NewRelic::Agent::Tracer.start_transaction_or_segment(partial_name: "GraphQL/parse", category: :web) super end |
#begin_resolve_type(type, value, context) ⇒ Object
106 107 108 109 110 111 |
# File 'lib/graphql/tracing/new_relic_trace.rb', line 106 def begin_resolve_type(type, value, context) if @trace_resolve_type nr_segment_stack << NewRelic::Agent::Tracer.start_transaction_or_segment(partial_name: @nr_resolve_type_names[type], category: :web) end super end |
#begin_validate(query, validate) ⇒ Object
47 48 49 50 |
# File 'lib/graphql/tracing/new_relic_trace.rb', line 47 def begin_validate(query, validate) @nr_validate = NewRelic::Agent::Tracer.start_transaction_or_segment(partial_name: "GraphQL/validate", category: :web) super end |
#dataloader_fiber_resume(source) ⇒ Object
144 145 146 147 148 149 |
# File 'lib/graphql/tracing/new_relic_trace.rb', line 144 def dataloader_fiber_resume(source) prev_segment = nr_segment_stack.pop seg_partial_name = prev_segment.name.sub(/^.*(GraphQL.*)$/, '\1') nr_segment_stack << NewRelic::Agent::Tracer.start_transaction_or_segment(partial_name: seg_partial_name, category: :web) super end |
#dataloader_fiber_yield(source) ⇒ Object
138 139 140 141 142 |
# File 'lib/graphql/tracing/new_relic_trace.rb', line 138 def dataloader_fiber_yield(source) current_segment = nr_segment_stack.last current_segment.finish super end |
#end_analyze_multiplex(multiplex, analyzers) ⇒ Object
62 63 64 65 |
# File 'lib/graphql/tracing/new_relic_trace.rb', line 62 def end_analyze_multiplex(multiplex, analyzers) @nr_analyze.finish super end |
#end_authorized(type, obj, ctx, is_authed) ⇒ Object
99 100 101 102 103 104 |
# File 'lib/graphql/tracing/new_relic_trace.rb', line 99 def (type, obj, ctx, is_authed) if @trace_authorized nr_segment_stack.pop.finish end super end |
#end_dataloader(dl) ⇒ Object
124 125 126 |
# File 'lib/graphql/tracing/new_relic_trace.rb', line 124 def end_dataloader(dl) super end |
#end_dataloader_source(source) ⇒ Object
133 134 135 136 |
# File 'lib/graphql/tracing/new_relic_trace.rb', line 133 def end_dataloader_source(source) nr_segment_stack.pop.finish super end |
#end_execute_field(field, objects, arguments, query, result) ⇒ Object
87 88 89 90 |
# File 'lib/graphql/tracing/new_relic_trace.rb', line 87 def end_execute_field(field, objects, arguments, query, result) nr_segment_stack.pop.finish super end |
#end_execute_multiplex(multiplex) ⇒ Object
77 78 79 80 |
# File 'lib/graphql/tracing/new_relic_trace.rb', line 77 def end_execute_multiplex(multiplex) @nr_execute.finish super end |
#end_parse(query_str) ⇒ Object
42 43 44 45 |
# File 'lib/graphql/tracing/new_relic_trace.rb', line 42 def end_parse(query_str) @nr_parse.finish super end |
#end_resolve_type(type, value, context, resolved_type) ⇒ Object
113 114 115 116 117 118 |
# File 'lib/graphql/tracing/new_relic_trace.rb', line 113 def end_resolve_type(type, value, context, resolved_type) if @trace_resolve_type nr_segment_stack.pop.finish end super end |
#end_validate(query, validate, validation_errors) ⇒ Object
52 53 54 55 |
# File 'lib/graphql/tracing/new_relic_trace.rb', line 52 def end_validate(query, validate, validation_errors) @nr_validate.finish super end |
#initialize(set_transaction_name: false, trace_authorized: true, trace_resolve_type: true, **_rest) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/graphql/tracing/new_relic_trace.rb', line 13 def initialize(set_transaction_name: false, trace_authorized: true, trace_resolve_type: true, **_rest) @set_transaction_name = set_transaction_name @trace_authorized = @trace_resolve_type = trace_resolve_type @nr_field_names = Hash.new do |h, field| h[field] = "GraphQL/#{field.owner.graphql_name}/#{field.graphql_name}" end.compare_by_identity @nr_authorized_names = Hash.new do |h, type| h[type] = "GraphQL/Authorized/#{type.graphql_name}" end.compare_by_identity @nr_resolve_type_names = Hash.new do |h, type| h[type] = "GraphQL/ResolveType/#{type.graphql_name}" end.compare_by_identity @nr_source_names = Hash.new do |h, source_inst| h[source_inst] = "GraphQL/Source/#{source_inst.class.name}" end.compare_by_identity @nr_parse = @nr_validate = @nr_analyze = @nr_execute = nil super end |