Module: NewRelic::Agent::Transaction::TraceContext
Defined Under Namespace
Modules: AccountHelpers
Constant Summary
collapse
- SUPPORTABILITY_PREFIX =
'Supportability/TraceContext'
- CREATE_PREFIX =
"#{SUPPORTABILITY_PREFIX}/Create"
- ACCEPT_PREFIX =
"#{SUPPORTABILITY_PREFIX}/Accept"
- TRACESTATE_PREFIX =
"#{SUPPORTABILITY_PREFIX}/TraceState"
- CREATE_SUCCESS_METRIC =
"#{CREATE_PREFIX}/Success"
- CREATE_EXCEPTION_METRIC =
"#{CREATE_PREFIX}/Exception"
- ACCEPT_SUCCESS_METRIC =
"#{ACCEPT_PREFIX}/Success"
- ACCEPT_EXCEPTION_METRIC =
"#{ACCEPT_PREFIX}/Exception"
- IGNORE_MULTIPLE_ACCEPT_METRIC =
"#{ACCEPT_PREFIX}/Ignored/Multiple"
- IGNORE_ACCEPT_AFTER_CREATE_METRIC =
"#{ACCEPT_PREFIX}/Ignored/CreateBeforeAccept"
- NO_NR_ENTRY_TRACESTATE_METRIC =
"#{TRACESTATE_PREFIX}/NoNrEntry"
- INVALID_TRACESTATE_PAYLOAD_METRIC =
"#{TRACESTATE_PREFIX}/InvalidNrEntry"
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods included from Coerce
boolean_int!, float, float!, int, int!, int_or_nil, log_failure, scalar, string, value_or_nil
Instance Attribute Details
39
40
41
|
# File 'lib/new_relic/agent/transaction/trace_context.rb', line 39
def
@trace_context_header_data
end
|
#trace_state_payload ⇒ Object
40
41
42
|
# File 'lib/new_relic/agent/transaction/trace_context.rb', line 40
def trace_state_payload
@trace_state_payload
end
|
Instance Method Details
#accept_trace_context(header_data) ⇒ Object
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
# File 'lib/new_relic/agent/transaction/trace_context.rb', line 128
def accept_trace_context()
return if ignore_trace_context?
@trace_context_header_data =
transaction.trace_id = .trace_id
transaction.parent_span_id = .parent_id
return false unless payload = assign_trace_state_payload
transaction.distributed_tracer.parent_transaction_id = payload.transaction_id
unless payload.sampled.nil?
transaction.sampled = payload.sampled
transaction.priority = payload.priority if payload.priority
end
NewRelic::Agent.increment_metric(ACCEPT_SUCCESS_METRIC)
true
rescue => e
NewRelic::Agent.increment_metric(ACCEPT_EXCEPTION_METRIC)
NewRelic::Agent.logger.warn('Failed to accept trace context payload', e)
false
end
|
#assign_trace_state_payload ⇒ Object
#create_trace_state ⇒ Object
#create_trace_state_payload ⇒ Object
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
# File 'lib/new_relic/agent/transaction/trace_context.rb', line 96
def create_trace_state_payload
unless Agent.config[:'distributed_tracing.enabled']
NewRelic::Agent.logger.warn('Not configured to create WC3 trace context payload')
return
end
span_guid = Agent.config[:'span_events.enabled'] ? transaction.current_segment.guid : nil
transaction_guid = Agent.config[:'transaction_events.enabled'] ? transaction.guid : nil
TraceContextPayload.create( \
parent_account_id: Agent.config[:account_id],
parent_app_id: Agent.config[:primary_application_id],
transaction_id: transaction_guid,
sampled: transaction.sampled?,
priority: float!(transaction.priority, NewRelic::PRIORITY_PRECISION),
id: span_guid
)
end
|
#ignore_trace_context? ⇒ Boolean
#trace_context_inserted? ⇒ Boolean
162
163
164
|
# File 'lib/new_relic/agent/transaction/trace_context.rb', line 162
def trace_context_inserted?
@trace_context_inserted ||= false
end
|