Class: NewRelic::Agent::DistributedTracing::TraceContext
- Inherits:
-
Object
- Object
- NewRelic::Agent::DistributedTracing::TraceContext
- Defined in:
- lib/new_relic/agent/distributed_tracing/trace_context.rb
Defined Under Namespace
Classes: HeaderData
Constant Summary collapse
- VERSION =
0x0
- COMMA =
','
- EQUALS =
'='
- INVALID_TRACE_ID =
('0' * 32)
- INVALID_PARENT_ID =
('0' * 16)
- INVALID_VERSION =
'ff'
- TRACE_ID_KEY =
'trace_id'
- TRACE_FLAGS_KEY =
'trace_flags'
- PARENT_ID_KEY =
'parent_id'
- VERSION_KEY =
'version'
- UNDEFINED_FIELDS_KEY =
'undefined_fields'
- TP_VERSION =
"(?<#{VERSION_KEY}>[a-f\\d]{2})"
- TP_TRACE_ID =
"(?<#{TRACE_ID_KEY}>[a-f\\d]{32})"
- TP_PARENT_ID =
"(?<#{PARENT_ID_KEY}>[a-f\\d]{16})"
- TP_TRACE_FLAGS =
"(?<#{TRACE_FLAGS_KEY}>\\d{2})"
- TP_UNDEFINED_FIELDS =
"(?<#{UNDEFINED_FIELDS_KEY}>-[a-zA-Z\\d-]*)"
- TRACE_PARENT_REGEX =
/\A#{TP_VERSION}-#{TP_TRACE_ID}-#{TP_PARENT_ID}-#{TP_TRACE_FLAGS}#{TP_UNDEFINED_FIELDS}?\z/
- TRACE_PARENT_FORMAT_STRING =
'%02x-%s-%s-%02x'
- MAX_TRACE_STATE_SIZE =
bytes
512
- MAX_TRACE_STATE_ENTRY_SIZE =
bytes
128
- SUPPORTABILITY_TRACE_PARENT_PARSE_EXCEPTION =
'Supportability/TraceContext/TraceParent/Parse/Exception'
- SUPPORTABILITY_TRACE_STATE_PARSE_EXCEPTION =
'Supportability/TraceContext/TraceState/Parse/Exception'
- SUPPORTABILITY_TRACE_STATE_INVALID_NR_ENTRY =
'Supportability/TraceContext/TraceState/InvalidNrEntry'
Class Method Summary collapse
- .create_trace_state_entry(entry_key, payload) ⇒ Object
- .insert(format: NewRelic::FORMAT_NON_RACK, carrier: nil, parent_id: nil, trace_id: nil, trace_flags: nil, trace_state: nil) ⇒ Object
- .parse(format: NewRelic::FORMAT_NON_RACK, carrier: nil, trace_state_entry_key: nil) ⇒ Object
Class Method Details
.create_trace_state_entry(entry_key, payload) ⇒ Object
80 81 82 |
# File 'lib/new_relic/agent/distributed_tracing/trace_context.rb', line 80 def create_trace_state_entry(entry_key, payload) +"#{entry_key}=#{payload}" end |
.insert(format: NewRelic::FORMAT_NON_RACK, carrier: nil, parent_id: nil, trace_id: nil, trace_flags: nil, trace_state: nil) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/new_relic/agent/distributed_tracing/trace_context.rb', line 42 def insert(format: NewRelic::FORMAT_NON_RACK, carrier: nil, parent_id: nil, trace_id: nil, trace_flags: nil, trace_state: nil) trace_parent_header = trace_parent_header_for_format(format) carrier[trace_parent_header] = format_trace_parent( \ trace_id: trace_id, parent_id: parent_id, trace_flags: trace_flags ) trace_state_header = trace_state_header_for_format(format) carrier[trace_state_header] = trace_state if trace_state && !trace_state.empty? end |
.parse(format: NewRelic::FORMAT_NON_RACK, carrier: nil, trace_state_entry_key: nil) ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/new_relic/agent/distributed_tracing/trace_context.rb', line 60 def parse(format: NewRelic::FORMAT_NON_RACK, carrier: nil, trace_state_entry_key: nil) trace_parent = extract_traceparent(format, carrier) unless trace_parent_valid?(trace_parent) NewRelic::Agent.increment_metric(SUPPORTABILITY_TRACE_PARENT_PARSE_EXCEPTION) return nil end begin if header_data = extract_tracestate(format, carrier, trace_state_entry_key) header_data.trace_parent = trace_parent header_data end rescue Exception NewRelic::Agent.increment_metric(SUPPORTABILITY_TRACE_STATE_PARSE_EXCEPTION) return nil end end |