Skip to content

Commit 7bb271c

Browse files
committed
feat: add example app to debug issue with propagation
1 parent f875822 commit 7bb271c

File tree

10 files changed

+832
-4
lines changed

10 files changed

+832
-4
lines changed

Cargo.lock

Lines changed: 155 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ members = [
1010
"dd-trace",
1111
"dd-trace-propagation",
1212
"dd-trace-sampling",
13+
"dd-trace-examples",
1314
]
1415

1516
# https://doc.rust-lang.org/cargo/reference/resolver.html#feature-resolver-version-2
@@ -38,7 +39,9 @@ opentelemetry_sdk = { version = "0.30.0", features = [
3839
opentelemetry = { version = "0.30.0", features = [
3940
"trace",
4041
], default-features = false }
41-
opentelemetry-semantic-conventions = { version = "0.30.0", features = ["semconv_experimental"] }
42+
opentelemetry-semantic-conventions = { version = "0.30.0", features = [
43+
"semconv_experimental",
44+
] }
4245
tokio = { version = "1.44.1" }
4346
rand = { version = "0.8", features = ["small_rng"] }
4447

datadog-opentelemetry/src/span_exporter.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -596,6 +596,7 @@ impl TraceExporterWorker {
596596
)
597597
})
598598
.collect();
599+
dbg!(&trace_chunks);
599600
match self.trace_exporter.send_trace_chunks(trace_chunks) {
600601
Ok(agent_response) => {
601602
self.handle_agent_response(agent_response);

datadog-opentelemetry/src/span_processor.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ struct Trace {
4040
tags: Option<HashMap<String, String>>,
4141
}
4242

43+
#[derive(Debug)]
4344
pub(crate) struct TracePropagationData {
4445
pub sampling_decision: Option<SamplingDecision>,
4546
pub origin: Option<String>,
@@ -403,6 +404,7 @@ impl DatadogSpanProcessor {
403404
/// If [`Trace`] contains origin, tags or sampling_decision add them as attributes of the root
404405
/// span
405406
fn add_trace_propagation_data(&self, mut trace: Trace) -> Vec<SpanData> {
407+
dbg!(&trace);
406408
let origin = trace.origin.unwrap_or_default();
407409

408410
for span in trace.finished_spans.iter_mut() {
@@ -427,6 +429,7 @@ impl DatadogSpanProcessor {
427429
"_sampling_priority_v1",
428430
sampling_decision.priority.into_i8() as i64,
429431
));
432+
dbg!(&sampling_decision, u64::from_be_bytes(span.span_context.span_id().to_bytes()));
430433

431434
span.attributes.push(KeyValue::new(
432435
SAMPLING_DECISION_MAKER_TAG_KEY,
@@ -454,6 +457,7 @@ impl opentelemetry_sdk::trace::SpanProcessor for DatadogSpanProcessor {
454457

455458
if parent_ctx.span().span_context().is_remote() {
456459
let propagation_data = self.get_remote_propagation_data(span, parent_ctx);
460+
dbg!(&propagation_data);
457461
self.registry
458462
.register_span(trace_id, span_id, propagation_data);
459463
} else if !parent_ctx.has_active_span() {

dd-trace-examples/Cargo.toml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
[package]
2+
name = "dd-trace-examples"
3+
rust-version.workspace = true
4+
edition.workspace = true
5+
version.workspace = true
6+
license.workspace = true
7+
repository.workspace = true
8+
readme.workspace = true
9+
description.workspace = true
10+
11+
[dependencies]
12+
# Datadog OpenTelemetry
13+
datadog-opentelemetry = { path = "../datadog-opentelemetry" }
14+
dd-trace = { path = "../dd-trace" }
15+
16+
# Tracing ecosystem
17+
tracing = "0.1"
18+
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
19+
tracing-opentelemetry = "0.31"
20+
21+
# HTTP server
22+
axum = "0.7"
23+
tokio = { version = "1.44.1", features = ["full"] }
24+
25+
# OpenTelemetry
26+
opentelemetry = { version = "0.30.0", features = ["trace"] }
27+
opentelemetry_sdk = { version = "0.30.0", features = ["trace"] }
28+
opentelemetry-http = { version = "0.30.0" }
29+
30+
# Utilities
31+
serde = { version = "1.0", features = ["derive"] }
32+
serde_json = "1.0"
33+
tower = "0.4"
34+
tower-http = { version = "0.5", features = ["cors", "trace"] }
35+
rand = "0.8"

0 commit comments

Comments
 (0)