Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
158 changes: 155 additions & 3 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ members = [
"dd-trace",
"dd-trace-propagation",
"dd-trace-sampling",
"dd-trace-examples",
]

# https://doc.rust-lang.org/cargo/reference/resolver.html#feature-resolver-version-2
Expand Down Expand Up @@ -38,7 +39,9 @@ opentelemetry_sdk = { version = "0.30.0", features = [
opentelemetry = { version = "0.30.0", features = [
"trace",
], default-features = false }
opentelemetry-semantic-conventions = { version = "0.30.0", features = ["semconv_experimental"] }
opentelemetry-semantic-conventions = { version = "0.30.0", features = [
"semconv_experimental",
] }
tokio = { version = "1.44.1" }
rand = { version = "0.8", features = ["small_rng"] }

Expand Down
1 change: 1 addition & 0 deletions datadog-opentelemetry/src/span_exporter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -596,6 +596,7 @@ impl TraceExporterWorker {
)
})
.collect();
dbg!(&trace_chunks);
match self.trace_exporter.send_trace_chunks(trace_chunks) {
Ok(agent_response) => {
self.handle_agent_response(agent_response);
Expand Down
4 changes: 4 additions & 0 deletions datadog-opentelemetry/src/span_processor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ struct Trace {
tags: Option<HashMap<String, String>>,
}

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

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

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

if parent_ctx.span().span_context().is_remote() {
let propagation_data = self.get_remote_propagation_data(span, parent_ctx);
dbg!(&propagation_data);
self.registry
.register_span(trace_id, span_id, propagation_data);
} else if !parent_ctx.has_active_span() {
Expand Down
35 changes: 35 additions & 0 deletions dd-trace-examples/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
[package]
name = "dd-trace-examples"
rust-version.workspace = true
edition.workspace = true
version.workspace = true
license.workspace = true
repository.workspace = true
readme.workspace = true
description.workspace = true

[dependencies]
# Datadog OpenTelemetry
datadog-opentelemetry = { path = "../datadog-opentelemetry" }
dd-trace = { path = "../dd-trace" }

# Tracing ecosystem
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
tracing-opentelemetry = "0.31"

# HTTP server
axum = "0.7"
tokio = { version = "1.44.1", features = ["full"] }

# OpenTelemetry
opentelemetry = { version = "0.30.0", features = ["trace"] }
opentelemetry_sdk = { version = "0.30.0", features = ["trace"] }
opentelemetry-http = { version = "0.30.0" }

# Utilities
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
tower = "0.4"
tower-http = { version = "0.5", features = ["cors", "trace"] }
rand = "0.8"
Loading
Loading