Skip to content

Commit bd23f55

Browse files
authored
Merge branch 'main' into appender-tracing-fix-trace-context
2 parents 260df21 + b3879b6 commit bd23f55

File tree

20 files changed

+75
-59
lines changed

20 files changed

+75
-59
lines changed

.cspell.json

+3
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
// workspace dictionary.
2727
"words": [
2828
"actix",
29+
"anyvalue",
2930
"appender",
3031
"appenders",
3132
"Bhasin",
@@ -37,6 +38,7 @@
3738
"deque",
3839
"Dirkjan",
3940
"EPYC",
41+
"flamegraph",
4042
"hasher",
4143
"Isobel",
4244
"jaegertracing",
@@ -53,6 +55,7 @@
5355
"OTELCOL",
5456
"OTLP",
5557
"periodicreader",
58+
"pprof",
5659
"prost",
5760
"protoc",
5861
"quantile",

.github/workflows/integration_tests.yml

-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ jobs:
99
integration_tests:
1010
runs-on: ubuntu-latest
1111
timeout-minutes: 10
12-
if: ${{ github.event.label.name == 'integration tests' || contains(github.event.pull_request.labels.*.name, 'integration tests') }}
1312
steps:
1413
- name: Free disk space
1514
run: |

opentelemetry-appender-tracing/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ criterion = { workspace = true }
2929
tokio = { workspace = true, features = ["full"]}
3030

3131
[target.'cfg(not(target_os = "windows"))'.dev-dependencies]
32-
pprof = { version = "0.13", features = ["flamegraph", "criterion"] }
32+
pprof = { version = "0.14", features = ["flamegraph", "criterion"] }
3333

3434
[features]
3535
experimental_metadata_attributes = ["dep:tracing-log"]

opentelemetry-sdk/CHANGELOG.md

+9-1
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,9 @@ metadata, a feature introduced in version 0.1.40. [#2418](https://github.com/ope
212212
.build();
213213
```
214214

215+
This implementation does not support multiple concurrent exports
216+
(`with_max_concurrent_exports` is not supported).
217+
215218
The new BatchLogProcessor can be used with OTLP Exporter, and supports
216219
following exporter features:
217220
- `grpc-tonic`: This requires `MeterProvider` to be created within a tokio
@@ -269,6 +272,8 @@ re-introduced in a future date, along with the ability to change the cardinality
269272
limit.
270273

271274
- *Breaking* Removed unused `opentelemetry_sdk::Error` enum.
275+
- *Breaking* Resource.get() modified to require reference to Key instead of owned.
276+
Replace `get(Key::from_static_str("key"))` with `get(&Key::from_static_str("key"))`
272277
- *Breaking* (Affects custom Exporter authors only) Moved `ExportError` trait from `opentelemetry::export::ExportError` to `opentelemetry_sdk::ExportError`
273278
- *Breaking (Affects custom SpanExporter, SpanProcessor authors only)*: Rename namespaces for Span exporter structs/traits
274279
before:
@@ -283,9 +288,12 @@ limit.
283288
`opentelemetry_sdk::logs::{ExportResult, LogBatch, LogExporter};`
284289

285290
- *Breaking* `opentelemetry_sdk::LogRecord::default()` method is removed.
286-
The only way to create log record outside opentelemetry_sdk crate is using
291+
The only way to create log record outside opentelemetry_sdk crate is using
287292
`Logger::create_log_record()` method.
288293

294+
- Rename `opentelemetry_sdk::logs::Builder` to `opentelemetry_sdk::logs::LoggerProviderBuilder`.
295+
- Rename `opentelemetry_sdk::trace::Builder` to `opentelemetry_sdk::trace::TracerProviderBuilder`.
296+
289297
- *Breaking*: Rename namespaces for InMemoryExporters. (The module is still under "testing" feature flag)
290298
before:
291299
`opentelemetry_sdk::testing::logs::{InMemoryLogExporter, InMemoryLogExporterBuilder};`

opentelemetry-sdk/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ rstest = "0.23.0"
3939
temp-env = { workspace = true }
4040

4141
[target.'cfg(not(target_os = "windows"))'.dev-dependencies]
42-
pprof = { version = "0.13", features = ["flamegraph", "criterion"] }
42+
pprof = { version = "0.14", features = ["flamegraph", "criterion"] }
4343

4444
[features]
4545
default = ["trace", "metrics", "logs", "internal-logs"]

opentelemetry-sdk/src/logs/log_emitter.rs opentelemetry-sdk/src/logs/logger_provider.rs

+13-13
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use opentelemetry::{otel_debug, otel_info, trace::TraceContextExt, Context, Inst
66
#[cfg(feature = "spec_unstable_logs_enabled")]
77
use opentelemetry::logs::Severity;
88

9-
use std::time::SystemTime;
9+
use opentelemetry::time::now;
1010
use std::{
1111
borrow::Cow,
1212
sync::{
@@ -78,8 +78,8 @@ impl opentelemetry::logs::LoggerProvider for LoggerProvider {
7878

7979
impl LoggerProvider {
8080
/// Create a new `LoggerProvider` builder.
81-
pub fn builder() -> Builder {
82-
Builder::default()
81+
pub fn builder() -> LoggerProviderBuilder {
82+
LoggerProviderBuilder::default()
8383
}
8484

8585
pub(crate) fn log_processors(&self) -> &[Box<dyn LogProcessor>] {
@@ -179,12 +179,12 @@ impl Drop for LoggerProviderInner {
179179

180180
#[derive(Debug, Default)]
181181
/// Builder for provider attributes.
182-
pub struct Builder {
182+
pub struct LoggerProviderBuilder {
183183
processors: Vec<Box<dyn LogProcessor>>,
184184
resource: Option<Resource>,
185185
}
186186

187-
impl Builder {
187+
impl LoggerProviderBuilder {
188188
/// Adds a [SimpleLogProcessor] with the configured exporter to the pipeline.
189189
///
190190
/// # Arguments
@@ -200,7 +200,7 @@ impl Builder {
200200
let mut processors = self.processors;
201201
processors.push(Box::new(SimpleLogProcessor::new(exporter)));
202202

203-
Builder { processors, ..self }
203+
LoggerProviderBuilder { processors, ..self }
204204
}
205205

206206
/// Adds a [BatchLogProcessor] with the configured exporter to the pipeline.
@@ -234,12 +234,12 @@ impl Builder {
234234
let mut processors = self.processors;
235235
processors.push(Box::new(processor));
236236

237-
Builder { processors, ..self }
237+
LoggerProviderBuilder { processors, ..self }
238238
}
239239

240240
/// The `Resource` to be associated with this Provider.
241241
pub fn with_resource(self, resource: Resource) -> Self {
242-
Builder {
242+
LoggerProviderBuilder {
243243
resource: Some(resource),
244244
..self
245245
}
@@ -313,7 +313,7 @@ impl opentelemetry::logs::Logger for Logger {
313313
}
314314
}
315315
if record.observed_timestamp.is_none() {
316-
record.observed_timestamp = Some(SystemTime::now());
316+
record.observed_timestamp = Some(now());
317317
}
318318

319319
for p in processors {
@@ -403,22 +403,22 @@ mod tests {
403403
assert_eq!(
404404
provider
405405
.resource()
406-
.get(Key::from_static_str(resource_key))
406+
.get(&Key::from_static_str(resource_key))
407407
.map(|v| v.to_string()),
408408
expect.map(|s| s.to_string())
409409
);
410410
};
411411
let assert_telemetry_resource = |provider: &super::LoggerProvider| {
412412
assert_eq!(
413-
provider.resource().get(TELEMETRY_SDK_LANGUAGE.into()),
413+
provider.resource().get(&TELEMETRY_SDK_LANGUAGE.into()),
414414
Some(Value::from("rust"))
415415
);
416416
assert_eq!(
417-
provider.resource().get(TELEMETRY_SDK_NAME.into()),
417+
provider.resource().get(&TELEMETRY_SDK_NAME.into()),
418418
Some(Value::from("opentelemetry"))
419419
);
420420
assert_eq!(
421-
provider.resource().get(TELEMETRY_SDK_VERSION.into()),
421+
provider.resource().get(&TELEMETRY_SDK_VERSION.into()),
422422
Some(Value::from(env!("CARGO_PKG_VERSION")))
423423
);
424424
};

opentelemetry-sdk/src/logs/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
//! # OpenTelemetry Log SDK
22
mod error;
33
mod export;
4-
mod log_emitter;
54
mod log_processor;
5+
mod logger_provider;
66
pub(crate) mod record;
77

88
/// In-Memory log exporter for testing purpose.
@@ -15,11 +15,11 @@ pub use in_memory_exporter::{InMemoryLogExporter, InMemoryLogExporterBuilder};
1515

1616
pub use error::{LogError, LogResult};
1717
pub use export::{ExportResult, LogBatch, LogExporter};
18-
pub use log_emitter::{Builder, Logger, LoggerProvider};
1918
pub use log_processor::{
2019
BatchConfig, BatchConfigBuilder, BatchLogProcessor, BatchLogProcessorBuilder, LogProcessor,
2120
SimpleLogProcessor,
2221
};
22+
pub use logger_provider::{Logger, LoggerProvider, LoggerProviderBuilder};
2323
pub use record::{LogRecord, TraceContext};
2424

2525
#[cfg(feature = "experimental_logs_batch_log_processor_with_async_runtime")]

opentelemetry-sdk/src/metrics/meter_provider.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ mod tests {
319319
assert_eq!(
320320
provider.inner.pipes.0[0]
321321
.resource
322-
.get(Key::from_static_str(resource_key))
322+
.get(&Key::from_static_str(resource_key))
323323
.map(|v| v.to_string()),
324324
expect.map(|s| s.to_string())
325325
);
@@ -328,19 +328,19 @@ mod tests {
328328
assert_eq!(
329329
provider.inner.pipes.0[0]
330330
.resource
331-
.get(TELEMETRY_SDK_LANGUAGE.into()),
331+
.get(&TELEMETRY_SDK_LANGUAGE.into()),
332332
Some(Value::from("rust"))
333333
);
334334
assert_eq!(
335335
provider.inner.pipes.0[0]
336336
.resource
337-
.get(TELEMETRY_SDK_NAME.into()),
337+
.get(&TELEMETRY_SDK_NAME.into()),
338338
Some(Value::from("opentelemetry"))
339339
);
340340
assert_eq!(
341341
provider.inner.pipes.0[0]
342342
.resource
343-
.get(TELEMETRY_SDK_VERSION.into()),
343+
.get(&TELEMETRY_SDK_VERSION.into()),
344344
Some(Value::from(env!("CARGO_PKG_VERSION")))
345345
);
346346
};

opentelemetry-sdk/src/resource/env.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ impl ResourceDetector for SdkProvidedResourceDetector {
8484
.or_else(|| {
8585
EnvResourceDetector::new()
8686
.detect()
87-
.get(Key::new(super::SERVICE_NAME))
87+
.get(&Key::new(super::SERVICE_NAME))
8888
})
8989
.unwrap_or_else(|| "unknown_service".into()),
9090
)])
@@ -138,14 +138,14 @@ mod tests {
138138
// Ensure no env var set
139139
let no_env = SdkProvidedResourceDetector.detect();
140140
assert_eq!(
141-
no_env.get(Key::from_static_str(crate::resource::SERVICE_NAME)),
141+
no_env.get(&Key::from_static_str(crate::resource::SERVICE_NAME)),
142142
Some(Value::from("unknown_service")),
143143
);
144144

145145
temp_env::with_var(OTEL_SERVICE_NAME, Some("test service"), || {
146146
let with_service = SdkProvidedResourceDetector.detect();
147147
assert_eq!(
148-
with_service.get(Key::from_static_str(crate::resource::SERVICE_NAME)),
148+
with_service.get(&Key::from_static_str(crate::resource::SERVICE_NAME)),
149149
Some(Value::from("test service")),
150150
)
151151
});
@@ -156,7 +156,7 @@ mod tests {
156156
|| {
157157
let with_service = SdkProvidedResourceDetector.detect();
158158
assert_eq!(
159-
with_service.get(Key::from_static_str(crate::resource::SERVICE_NAME)),
159+
with_service.get(&Key::from_static_str(crate::resource::SERVICE_NAME)),
160160
Some(Value::from("test service1")),
161161
)
162162
},
@@ -171,7 +171,7 @@ mod tests {
171171
|| {
172172
let with_service = SdkProvidedResourceDetector.detect();
173173
assert_eq!(
174-
with_service.get(Key::from_static_str(crate::resource::SERVICE_NAME)),
174+
with_service.get(&Key::from_static_str(crate::resource::SERVICE_NAME)),
175175
Some(Value::from("test service"))
176176
);
177177
},

opentelemetry-sdk/src/resource/mod.rs

+4-7
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,11 @@ pub struct Resource {
5454
impl Resource {
5555
/// Creates a [ResourceBuilder] that allows you to configure multiple aspects of the Resource.
5656
///
57-
/// This [ResourceBuilder] will always include the following [ResourceDetector]s:
57+
/// This [ResourceBuilder] will include the following [ResourceDetector]s:
5858
/// - [SdkProvidedResourceDetector]
5959
/// - [TelemetryResourceDetector]
6060
/// - [EnvResourceDetector]
61+
/// If you'd like to start from an empty resource, use [Resource::builder_empty].
6162
pub fn builder() -> ResourceBuilder {
6263
ResourceBuilder {
6364
resource: Self::from_detectors(&[
@@ -138,8 +139,6 @@ impl Resource {
138139
}
139140

140141
/// Create a new `Resource` from resource detectors.
141-
///
142-
/// timeout will be applied to each detector.
143142
fn from_detectors(detectors: &[Box<dyn ResourceDetector>]) -> Self {
144143
let mut resource = Resource::empty();
145144
for detector in detectors {
@@ -227,8 +226,8 @@ impl Resource {
227226
}
228227

229228
/// Retrieve the value from resource associate with given key.
230-
pub fn get(&self, key: Key) -> Option<Value> {
231-
self.inner.attrs.get(&key).cloned()
229+
pub fn get(&self, key: &Key) -> Option<Value> {
230+
self.inner.attrs.get(key).cloned()
232231
}
233232
}
234233

@@ -260,8 +259,6 @@ impl<'a> IntoIterator for &'a Resource {
260259
pub trait ResourceDetector {
261260
/// detect returns an initialized Resource based on gathered information.
262261
///
263-
/// timeout is used in case the detection operation takes too much time.
264-
///
265262
/// If source information to construct a Resource is inaccessible, an empty Resource should be returned
266263
///
267264
/// If source information to construct a Resource is invalid, for example,

opentelemetry-sdk/src/trace/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ pub use in_memory_exporter::{InMemorySpanExporter, InMemorySpanExporterBuilder};
3535

3636
pub use id_generator::{IdGenerator, RandomIdGenerator};
3737
pub use links::SpanLinks;
38-
pub use provider::{Builder, TracerProvider};
38+
pub use provider::{TracerProvider, TracerProviderBuilder};
3939
pub use sampler::{Sampler, ShouldSample};
4040
pub use span::Span;
4141
pub use span_limit::SpanLimits;

0 commit comments

Comments
 (0)