Skip to content

Commit 9700219

Browse files
authored
Use display for standard trace and span id formats (#1299)
Have consistent padding and hex casing by using the `Display` impl of trace and span ids which is in accordance with the [spec]. [spec]: https://github.com/open-telemetry/opentelemetry-specification/blob/v1.26.0/specification/trace/api.md#retrieving-the-traceid-and-spanid
1 parent 175f1cf commit 9700219

File tree

7 files changed

+14
-24
lines changed

7 files changed

+14
-24
lines changed

opentelemetry-contrib/src/trace/propagator/trace_context_response.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ impl TextMapPropagator for TraceContextResponsePropagator {
103103
let span_context = span.span_context();
104104
if span_context.is_valid() {
105105
let header_value = format!(
106-
"{:02x}-{:032x}-{:016x}-{:02x}",
106+
"{:02x}-{}-{}-{:02x}",
107107
SUPPORTED_VERSION,
108108
span_context.trace_id(),
109109
span_context.span_id(),

opentelemetry-jaeger/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -559,7 +559,7 @@ mod propagator {
559559
0x00
560560
};
561561
let header_value = format!(
562-
"{:032x}:{:016x}:{:01}:{:01x}",
562+
"{}:{}:{:01}:{:01x}",
563563
span_context.trace_id(),
564564
span_context.span_id(),
565565
DEPRECATED_PARENT_SPAN,

opentelemetry-sdk/src/propagation/trace_context.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ impl TextMapPropagator for TraceContextPropagator {
114114
let span_context = span.span_context();
115115
if span_context.is_valid() {
116116
let header_value = format!(
117-
"{:02x}-{:032x}-{:016x}-{:02x}",
117+
"{:02x}-{}-{}-{:02x}",
118118
SUPPORTED_VERSION,
119119
span_context.trace_id(),
120120
span_context.span_id(),

opentelemetry-sdk/src/trace/id_generator/aws.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ mod tests {
8383
.unwrap()
8484
.as_secs();
8585

86-
let trace_as_hex: String = format!("{:032x}", trace_id);
86+
let trace_as_hex = trace_id.to_string();
8787
let (timestamp, _xray_id) = trace_as_hex.split_at(8_usize);
8888

8989
let trace_time: u64 = u64::from_str_radix(timestamp, 16).unwrap();

opentelemetry-stdout/src/logs/transform.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,12 +102,12 @@ impl From<opentelemetry_sdk::export::logs::LogData> for LogRecord {
102102
.record
103103
.trace_context
104104
.as_ref()
105-
.map(|c| format!("{:x}", c.trace_id)),
105+
.map(|c| c.trace_id.to_string()),
106106
span_id: value
107107
.record
108108
.trace_context
109109
.as_ref()
110-
.map(|c| format!("{:x}", c.span_id)),
110+
.map(|c| c.span_id.to_string()),
111111
flags: value
112112
.record
113113
.trace_context

opentelemetry-stdout/src/trace/transform.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,10 @@ struct Span {
9393
impl From<opentelemetry_sdk::export::trace::SpanData> for Span {
9494
fn from(value: opentelemetry_sdk::export::trace::SpanData) -> Self {
9595
Span {
96-
trace_id: format!("{:x}", value.span_context.trace_id()),
97-
span_id: format!("{:x}", value.span_context.span_id()),
96+
trace_id: value.span_context.trace_id().to_string(),
97+
span_id: value.span_context.span_id().to_string(),
9898
trace_state: Some(value.span_context.trace_state().header()).filter(|s| !s.is_empty()),
99-
parent_span_id: Some(format!("{:x}", value.parent_span_id))
99+
parent_span_id: Some(value.parent_span_id.to_string())
100100
.filter(|s| s != "0")
101101
.unwrap_or_default(),
102102
name: value.name,
@@ -180,8 +180,8 @@ struct Link {
180180
impl From<opentelemetry::trace::Link> for Link {
181181
fn from(value: opentelemetry::trace::Link) -> Self {
182182
Link {
183-
trace_id: format!("{:x}", value.span_context.trace_id()),
184-
span_id: format!("{:x}", value.span_context.span_id()),
183+
trace_id: value.span_context.trace_id().to_string(),
184+
span_id: value.span_context.span_id().to_string(),
185185
trace_state: Some(value.span_context.trace_state().header()).filter(|s| !s.is_empty()),
186186
attributes: value.attributes.into_iter().map(Into::into).collect(),
187187
dropped_attributes_count: value.dropped_attributes_count,

opentelemetry-zipkin/src/propagator/mod.rs

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -228,11 +228,7 @@ impl TextMapPropagator for Propagator {
228228
span_context.trace_flags() & TRACE_FLAG_DEFERRED == TRACE_FLAG_DEFERRED;
229229
let is_debug = span_context.trace_flags() & TRACE_FLAG_DEBUG == TRACE_FLAG_DEBUG;
230230
if self.inject_encoding.support(&B3Encoding::SingleHeader) {
231-
let mut value = format!(
232-
"{:032x}-{:016x}",
233-
span_context.trace_id(),
234-
span_context.span_id(),
235-
);
231+
let mut value = format!("{}-{}", span_context.trace_id(), span_context.span_id());
236232
if !is_deferred {
237233
let flag = if is_debug {
238234
"d"
@@ -250,14 +246,8 @@ impl TextMapPropagator for Propagator {
250246
|| self.inject_encoding.support(&B3Encoding::UnSpecified)
251247
{
252248
// if inject_encoding is Unspecified, default to use MultipleHeader
253-
injector.set(
254-
B3_TRACE_ID_HEADER,
255-
format!("{:032x}", span_context.trace_id()),
256-
);
257-
injector.set(
258-
B3_SPAN_ID_HEADER,
259-
format!("{:016x}", span_context.span_id()),
260-
);
249+
injector.set(B3_TRACE_ID_HEADER, span_context.trace_id().to_string());
250+
injector.set(B3_SPAN_ID_HEADER, span_context.span_id().to_string());
261251

262252
if is_debug {
263253
injector.set(B3_DEBUG_FLAG_HEADER, "1".to_string());

0 commit comments

Comments
 (0)