Skip to content

Commit 127164f

Browse files
authored
Merge branch 'main' into time-not-optional-for-data-points
2 parents 77a99d7 + 6b71301 commit 127164f

File tree

17 files changed

+32
-35
lines changed

17 files changed

+32
-35
lines changed

opentelemetry-appender-tracing/src/layer.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ impl<'a, LR: LogRecord> EventVisitor<'a, LR> {
6969
}
7070
}
7171

72-
impl<'a, LR: LogRecord> tracing::field::Visit for EventVisitor<'a, LR> {
72+
impl<LR: LogRecord> tracing::field::Visit for EventVisitor<'_, LR> {
7373
fn record_debug(&mut self, field: &tracing::field::Field, value: &dyn std::fmt::Debug) {
7474
#[cfg(feature = "experimental_metadata_attributes")]
7575
if is_duplicated_metadata(field.name()) {

opentelemetry-http/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use opentelemetry::propagation::{Extractor, Injector};
1313
/// for example usage.
1414
pub struct HeaderInjector<'a>(pub &'a mut http::HeaderMap);
1515

16-
impl<'a> Injector for HeaderInjector<'a> {
16+
impl Injector for HeaderInjector<'_> {
1717
/// Set a key and value in the HeaderMap. Does nothing if the key or value are not valid inputs.
1818
fn set(&mut self, key: &str, value: String) {
1919
if let Ok(name) = http::header::HeaderName::from_bytes(key.as_bytes()) {
@@ -30,7 +30,7 @@ impl<'a> Injector for HeaderInjector<'a> {
3030
/// for example usage.
3131
pub struct HeaderExtractor<'a>(pub &'a http::HeaderMap);
3232

33-
impl<'a> Extractor for HeaderExtractor<'a> {
33+
impl Extractor for HeaderExtractor<'_> {
3434
/// Get a value for a key from the HeaderMap. If the value is not valid ASCII, returns None.
3535
fn get(&self, key: &str) -> Option<&str> {
3636
self.0.get(key).and_then(|value| value.to_str().ok())

opentelemetry-sdk/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
## vNext
44

5+
- *Breaking* SimpleLogProcessor modified to be generic over `LogExporter` to
6+
avoid dynamic dispatch to invoke exporter. If you were using
7+
`with_simple_exporter` to add `LogExporter` with SimpleLogProcessor, this is a
8+
transparent change.
9+
[#2338](https://github.com/open-telemetry/opentelemetry-rust/pull/2338)
10+
511
## 0.27.1
612

713
Released 2024-Nov-27

opentelemetry-sdk/src/export/logs/mod.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ impl<'a> LogBatch<'a> {
3939
///
4040
/// Note - this is not a public function, and should not be used directly. This would be
4141
/// made private in the future.
42-
4342
pub fn new(data: &'a [(&'a LogRecord, &'a InstrumentationScope)]) -> LogBatch<'a> {
4443
LogBatch { data }
4544
}

opentelemetry-sdk/src/logs/log_emitter.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ impl Builder {
188188
/// The `LogExporter` that this provider should use.
189189
pub fn with_simple_exporter<T: LogExporter + 'static>(self, exporter: T) -> Self {
190190
let mut processors = self.processors;
191-
processors.push(Box::new(SimpleLogProcessor::new(Box::new(exporter))));
191+
processors.push(Box::new(SimpleLogProcessor::new(exporter)));
192192

193193
Builder { processors, ..self }
194194
}

opentelemetry-sdk/src/logs/log_processor.rs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -77,21 +77,21 @@ pub trait LogProcessor: Send + Sync + Debug {
7777
/// debugging and testing. For scenarios requiring higher
7878
/// performance/throughput, consider using [BatchLogProcessor].
7979
#[derive(Debug)]
80-
pub struct SimpleLogProcessor {
81-
exporter: Mutex<Box<dyn LogExporter>>,
80+
pub struct SimpleLogProcessor<T: LogExporter> {
81+
exporter: Mutex<T>,
8282
is_shutdown: AtomicBool,
8383
}
8484

85-
impl SimpleLogProcessor {
86-
pub(crate) fn new(exporter: Box<dyn LogExporter>) -> Self {
85+
impl<T: LogExporter> SimpleLogProcessor<T> {
86+
pub(crate) fn new(exporter: T) -> Self {
8787
SimpleLogProcessor {
8888
exporter: Mutex::new(exporter),
8989
is_shutdown: AtomicBool::new(false),
9090
}
9191
}
9292
}
9393

94-
impl LogProcessor for SimpleLogProcessor {
94+
impl<T: LogExporter> LogProcessor for SimpleLogProcessor<T> {
9595
fn emit(&self, record: &mut LogRecord, instrumentation: &InstrumentationScope) {
9696
// noop after shutdown
9797
if self.is_shutdown.load(std::sync::atomic::Ordering::Relaxed) {
@@ -764,7 +764,7 @@ mod tests {
764764
let exporter = MockLogExporter {
765765
resource: Arc::new(Mutex::new(None)),
766766
};
767-
let processor = SimpleLogProcessor::new(Box::new(exporter.clone()));
767+
let processor = SimpleLogProcessor::new(exporter.clone());
768768
let _ = LoggerProvider::builder()
769769
.with_log_processor(processor)
770770
.with_resource(Resource::new(vec![
@@ -832,7 +832,7 @@ mod tests {
832832
let exporter = InMemoryLogExporterBuilder::default()
833833
.keep_records_on_shutdown()
834834
.build();
835-
let processor = SimpleLogProcessor::new(Box::new(exporter.clone()));
835+
let processor = SimpleLogProcessor::new(exporter.clone());
836836

837837
let mut record: LogRecord = Default::default();
838838
let instrumentation: InstrumentationScope = Default::default();
@@ -1013,7 +1013,7 @@ mod tests {
10131013
#[test]
10141014
fn test_simple_processor_sync_exporter_without_runtime() {
10151015
let exporter = InMemoryLogExporterBuilder::default().build();
1016-
let processor = SimpleLogProcessor::new(Box::new(exporter.clone()));
1016+
let processor = SimpleLogProcessor::new(exporter.clone());
10171017

10181018
let mut record: LogRecord = Default::default();
10191019
let instrumentation: InstrumentationScope = Default::default();
@@ -1026,7 +1026,7 @@ mod tests {
10261026
#[tokio::test(flavor = "multi_thread", worker_threads = 1)]
10271027
async fn test_simple_processor_sync_exporter_with_runtime() {
10281028
let exporter = InMemoryLogExporterBuilder::default().build();
1029-
let processor = SimpleLogProcessor::new(Box::new(exporter.clone()));
1029+
let processor = SimpleLogProcessor::new(exporter.clone());
10301030

10311031
let mut record: LogRecord = Default::default();
10321032
let instrumentation: InstrumentationScope = Default::default();
@@ -1039,7 +1039,7 @@ mod tests {
10391039
#[tokio::test(flavor = "multi_thread")]
10401040
async fn test_simple_processor_sync_exporter_with_multi_thread_runtime() {
10411041
let exporter = InMemoryLogExporterBuilder::default().build();
1042-
let processor = Arc::new(SimpleLogProcessor::new(Box::new(exporter.clone())));
1042+
let processor = Arc::new(SimpleLogProcessor::new(exporter.clone()));
10431043

10441044
let mut handles = vec![];
10451045
for _ in 0..10 {
@@ -1062,7 +1062,7 @@ mod tests {
10621062
#[tokio::test(flavor = "current_thread")]
10631063
async fn test_simple_processor_sync_exporter_with_current_thread_runtime() {
10641064
let exporter = InMemoryLogExporterBuilder::default().build();
1065-
let processor = SimpleLogProcessor::new(Box::new(exporter.clone()));
1065+
let processor = SimpleLogProcessor::new(exporter.clone());
10661066

10671067
let mut record: LogRecord = Default::default();
10681068
let instrumentation: InstrumentationScope = Default::default();
@@ -1109,7 +1109,7 @@ mod tests {
11091109
// Use `catch_unwind` to catch the panic caused by missing Tokio runtime
11101110
let result = std::panic::catch_unwind(|| {
11111111
let exporter = LogExporterThatRequiresTokio::new();
1112-
let processor = SimpleLogProcessor::new(Box::new(exporter.clone()));
1112+
let processor = SimpleLogProcessor::new(exporter.clone());
11131113

11141114
let mut record: LogRecord = Default::default();
11151115
let instrumentation: InstrumentationScope = Default::default();
@@ -1158,7 +1158,7 @@ mod tests {
11581158
// tasks nor the exporter can proceed.
11591159
async fn test_simple_processor_async_exporter_with_all_runtime_worker_threads_blocked() {
11601160
let exporter = LogExporterThatRequiresTokio::new();
1161-
let processor = Arc::new(SimpleLogProcessor::new(Box::new(exporter.clone())));
1161+
let processor = Arc::new(SimpleLogProcessor::new(exporter.clone()));
11621162

11631163
let concurrent_emit = 4; // number of worker threads
11641164

@@ -1189,7 +1189,7 @@ mod tests {
11891189
// tasks occupy the runtime.
11901190
async fn test_simple_processor_async_exporter_with_runtime() {
11911191
let exporter = LogExporterThatRequiresTokio::new();
1192-
let processor = SimpleLogProcessor::new(Box::new(exporter.clone()));
1192+
let processor = SimpleLogProcessor::new(exporter.clone());
11931193

11941194
let mut record: LogRecord = Default::default();
11951195
let instrumentation: InstrumentationScope = Default::default();
@@ -1208,7 +1208,7 @@ mod tests {
12081208
async fn test_simple_processor_async_exporter_with_multi_thread_runtime() {
12091209
let exporter = LogExporterThatRequiresTokio::new();
12101210

1211-
let processor = SimpleLogProcessor::new(Box::new(exporter.clone()));
1211+
let processor = SimpleLogProcessor::new(exporter.clone());
12121212

12131213
let mut record: LogRecord = Default::default();
12141214
let instrumentation: InstrumentationScope = Default::default();
@@ -1228,7 +1228,7 @@ mod tests {
12281228
async fn test_simple_processor_async_exporter_with_current_thread_runtime() {
12291229
let exporter = LogExporterThatRequiresTokio::new();
12301230

1231-
let processor = SimpleLogProcessor::new(Box::new(exporter.clone()));
1231+
let processor = SimpleLogProcessor::new(exporter.clone());
12321232

12331233
let mut record: LogRecord = Default::default();
12341234
let instrumentation: InstrumentationScope = Default::default();

opentelemetry-sdk/src/logs/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ mod tests {
4949
let exporter: InMemoryLogExporter = InMemoryLogExporter::default();
5050
let logger_provider = LoggerProvider::builder()
5151
.with_resource(resource.clone())
52-
.with_log_processor(SimpleLogProcessor::new(Box::new(exporter.clone())))
52+
.with_log_processor(SimpleLogProcessor::new(exporter.clone()))
5353
.build();
5454

5555
// Act

opentelemetry-sdk/src/metrics/meter_provider.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,6 @@ impl MeterProviderBuilder {
256256
}
257257

258258
/// Construct a new [MeterProvider] with this configuration.
259-
260259
pub fn build(self) -> SdkMeterProvider {
261260
otel_debug!(
262261
name: "MeterProvider.Building",

opentelemetry-sdk/src/testing/logs/in_memory_exporter.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ use std::sync::{Arc, Mutex};
2929
/// .build();
3030
/// // Setup Log Appenders and emit logs. (Not shown here)
3131
/// logger_provider.force_flush();
32-
3332
/// let emitted_logs = exporter.get_emitted_logs().unwrap();
3433
/// for log in emitted_logs {
3534
/// println!("{:?}", log);

opentelemetry-sdk/src/trace/sampler/jaeger_remote/remote.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
/// Generate types based on proto
2-
32
/// ProbabilisticSamplingStrategy samples traces with a fixed probability.
43
#[derive(serde::Serialize, serde::Deserialize, PartialOrd, PartialEq)]
54
#[serde(rename_all = "camelCase")]

0 commit comments

Comments
 (0)