Skip to content

Commit 3146dfb

Browse files
authored
Merge branch 'main' into appender-tracing-fix-trace-context
2 parents 319bed7 + 6cc327d commit 3146dfb

File tree

70 files changed

+3144
-1752
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+3144
-1752
lines changed

.cspell.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
"Bhasin",
3232
"Cijo",
3333
"clippy",
34+
"clonable",
3435
"codecov",
3536
"datapoint",
3637
"deque",
@@ -52,6 +53,7 @@
5253
"OTELCOL",
5354
"OTLP",
5455
"periodicreader",
56+
"prost",
5557
"protoc",
5658
"quantile",
5759
"Redelmeier",

Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ hyper = { version = "1.3", default-features = false }
2929
hyper-util = "0.1"
3030
log = "0.4.21"
3131
once_cell = "1.13"
32-
ordered-float = "4.0"
3332
pin-project-lite = "0.2"
3433
prost = "0.13"
3534
prost-build = "0.13"

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ for specific dates and for Zoom meeting links. "OTel Rust SIG" is the name of
184184
meeting for this group.
185185

186186
Meeting notes are available as a public [Google
187-
doc](https://docs.google.com/document/d/1tGKuCsSnyT2McDncVJrMgg74_z8V06riWZa0Sr79I_4/edit).
187+
doc](https://docs.google.com/document/d/12upOzNk8c3SFTjsL6IRohCWMgzLKoknSCOOdMakbWo4/edit).
188188
If you have trouble accessing the doc, please get in touch on
189189
[Slack](https://cloud-native.slack.com/archives/C03GDP0H023).
190190

examples/tracing-grpc/src/client.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use hello_world::greeter_client::GreeterClient;
22
use hello_world::HelloRequest;
33
use opentelemetry::{global, propagation::Injector};
4-
use opentelemetry_sdk::{propagation::TraceContextPropagator, runtime::Tokio, trace as sdktrace};
4+
use opentelemetry_sdk::{propagation::TraceContextPropagator, trace as sdktrace};
55
use opentelemetry_stdout::SpanExporter;
66

77
use opentelemetry::{
@@ -13,7 +13,7 @@ fn init_tracer() -> sdktrace::TracerProvider {
1313
global::set_text_map_propagator(TraceContextPropagator::new());
1414
// Install stdout exporter pipeline to be able to retrieve the collected spans.
1515
let provider = sdktrace::TracerProvider::builder()
16-
.with_batch_exporter(SpanExporter::default(), Tokio)
16+
.with_batch_exporter(SpanExporter::default())
1717
.build();
1818

1919
global::set_tracer_provider(provider.clone());
@@ -22,7 +22,7 @@ fn init_tracer() -> sdktrace::TracerProvider {
2222

2323
struct MetadataMap<'a>(&'a mut tonic::metadata::MetadataMap);
2424

25-
impl<'a> Injector for MetadataMap<'a> {
25+
impl Injector for MetadataMap<'_> {
2626
/// Set a key and value in the MetadataMap. Does nothing if the key or value are not valid inputs
2727
fn set(&mut self, key: &str, value: String) {
2828
if let Ok(key) = tonic::metadata::MetadataKey::from_bytes(key.as_bytes()) {

examples/tracing-grpc/src/server.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,15 @@ use opentelemetry::{
55
propagation::Extractor,
66
trace::{Span, SpanKind, Tracer},
77
};
8-
use opentelemetry_sdk::{
9-
propagation::TraceContextPropagator, runtime::Tokio, trace::TracerProvider,
10-
};
8+
use opentelemetry_sdk::{propagation::TraceContextPropagator, trace::TracerProvider};
119
use opentelemetry_stdout::SpanExporter;
1210
use tonic::{transport::Server, Request, Response, Status};
1311

1412
fn init_tracer() -> TracerProvider {
1513
global::set_text_map_propagator(TraceContextPropagator::new());
1614
// Install stdout exporter pipeline to be able to retrieve the collected spans.
1715
let provider = TracerProvider::builder()
18-
.with_batch_exporter(SpanExporter::default(), Tokio)
16+
.with_batch_exporter(SpanExporter::default())
1917
.build();
2018

2119
global::set_tracer_provider(provider.clone());
@@ -29,7 +27,7 @@ pub mod hello_world {
2927

3028
struct MetadataMap<'a>(&'a tonic::metadata::MetadataMap);
3129

32-
impl<'a> Extractor for MetadataMap<'a> {
30+
impl Extractor for MetadataMap<'_> {
3331
/// Get a value for a key from the MetadataMap. If the value can't be converted to &str, returns None
3432
fn get(&self, key: &str) -> Option<&str> {
3533
self.0.get(key).and_then(|metadata| metadata.to_str().ok())

examples/tracing-jaeger/src/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use opentelemetry::{
44
KeyValue,
55
};
66
use opentelemetry_sdk::trace::TracerProvider;
7-
use opentelemetry_sdk::{runtime, Resource};
7+
use opentelemetry_sdk::Resource;
88

99
use std::error::Error;
1010

@@ -14,7 +14,7 @@ fn init_tracer_provider() -> Result<opentelemetry_sdk::trace::TracerProvider, Tr
1414
.build()?;
1515

1616
Ok(TracerProvider::builder()
17-
.with_batch_exporter(exporter, runtime::Tokio)
17+
.with_batch_exporter(exporter)
1818
.with_resource(
1919
Resource::builder()
2020
.with_service_name("tracing-jaeger")

opentelemetry-appender-log/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ mod any_value {
239239
pub(crate) fn serialize(value: log::kv::Value) -> Option<AnyValue> {
240240
struct ValueVisitor(Option<AnyValue>);
241241

242-
impl<'kvs> log::kv::VisitValue<'kvs> for ValueVisitor {
242+
impl log::kv::VisitValue<'_> for ValueVisitor {
243243
fn visit_any(&mut self, value: log::kv::Value) -> Result<(), log::kv::Error> {
244244
self.0 = Some(AnyValue::String(StringValue::from(value.to_string())));
245245

opentelemetry-appender-tracing/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ opentelemetry-stdout = { path = "../opentelemetry-stdout", features = ["logs"] }
2525
opentelemetry_sdk = { path = "../opentelemetry-sdk", features = ["logs", "testing"] }
2626
tracing-subscriber = { workspace = true, features = ["registry", "std", "env-filter"] }
2727
tracing-log = "0.2"
28-
async-trait = { workspace = true }
2928
criterion = { workspace = true }
3029
tokio = { workspace = true, features = ["full"]}
3130

opentelemetry-appender-tracing/benches/logs.rs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
| ot_layer_enabled | 196 ns |
1414
*/
1515

16-
use async_trait::async_trait;
1716
use criterion::{criterion_group, criterion_main, Criterion};
1817
use opentelemetry::InstrumentationScope;
1918
use opentelemetry_appender_tracing::layer as tracing_layer;
@@ -32,10 +31,13 @@ struct NoopExporter {
3231
enabled: bool,
3332
}
3433

35-
#[async_trait]
3634
impl LogExporter for NoopExporter {
37-
async fn export(&self, _: LogBatch<'_>) -> LogResult<()> {
38-
LogResult::Ok(())
35+
#[allow(clippy::manual_async_fn)]
36+
fn export(
37+
&self,
38+
_batch: LogBatch<'_>,
39+
) -> impl std::future::Future<Output = LogResult<()>> + Send {
40+
async { LogResult::Ok(()) }
3941
}
4042

4143
fn event_enabled(&self, _: opentelemetry::logs::Severity, _: &str, _: &str) -> bool {
@@ -44,17 +46,17 @@ impl LogExporter for NoopExporter {
4446
}
4547

4648
#[derive(Debug)]
47-
struct NoopProcessor {
48-
exporter: Box<dyn LogExporter>,
49+
struct NoopProcessor<E: LogExporter> {
50+
exporter: E,
4951
}
5052

51-
impl NoopProcessor {
52-
fn new(exporter: Box<dyn LogExporter>) -> Self {
53+
impl<E: LogExporter> NoopProcessor<E> {
54+
fn new(exporter: E) -> Self {
5355
Self { exporter }
5456
}
5557
}
5658

57-
impl LogProcessor for NoopProcessor {
59+
impl<E: LogExporter> LogProcessor for NoopProcessor<E> {
5860
fn emit(&self, _: &mut LogRecord, _: &InstrumentationScope) {
5961
// no-op
6062
}
@@ -124,7 +126,7 @@ fn benchmark_no_subscriber(c: &mut Criterion) {
124126

125127
fn benchmark_with_ot_layer(c: &mut Criterion, enabled: bool, bench_name: &str) {
126128
let exporter = NoopExporter { enabled };
127-
let processor = NoopProcessor::new(Box::new(exporter));
129+
let processor = NoopProcessor::new(exporter);
128130
let provider = LoggerProvider::builder()
129131
.with_resource(
130132
Resource::builder_empty()

opentelemetry-appender-tracing/src/layer.rs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,6 @@ const fn severity_of_level(level: &Level) -> Severity {
229229
#[cfg(test)]
230230
mod tests {
231231
use crate::layer;
232-
use async_trait::async_trait;
233232
use opentelemetry::logs::Severity;
234233
use opentelemetry::trace::TracerProvider as _;
235234
use opentelemetry::trace::{TraceContextExt, TraceFlags, Tracer};
@@ -265,13 +264,18 @@ mod tests {
265264
#[derive(Clone, Debug, Default)]
266265
struct ReentrantLogExporter;
267266

268-
#[async_trait]
269267
impl LogExporter for ReentrantLogExporter {
270-
async fn export(&self, _batch: LogBatch<'_>) -> LogResult<()> {
271-
// This will cause a deadlock as the export itself creates a log
272-
// while still within the lock of the SimpleLogProcessor.
273-
warn!(name: "my-event-name", target: "reentrant", event_id = 20, user_name = "otel", user_email = "[email protected]");
274-
Ok(())
268+
#[allow(clippy::manual_async_fn)]
269+
fn export(
270+
&self,
271+
_batch: LogBatch<'_>,
272+
) -> impl std::future::Future<Output = LogResult<()>> + Send {
273+
async {
274+
// This will cause a deadlock as the export itself creates a log
275+
// while still within the lock of the SimpleLogProcessor.
276+
warn!(name: "my-event-name", target: "reentrant", event_id = 20, user_name = "otel", user_email = "[email protected]");
277+
Ok(())
278+
}
275279
}
276280
}
277281

0 commit comments

Comments
 (0)