Skip to content

Commit 7dd1330

Browse files
authored
Merge branch 'main' into log-processor-max-timeout-removal
2 parents 081a537 + dde68a0 commit 7dd1330

File tree

2 files changed

+22
-32
lines changed

2 files changed

+22
-32
lines changed

opentelemetry-sdk/src/logs/log_processor.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,7 @@ impl LogProcessor for BatchLogProcessor {
343343
// a log, emit a warning.
344344
if self.dropped_logs_count.fetch_add(1, Ordering::Relaxed) == 0 {
345345
otel_warn!(name: "BatchLogProcessor.LogDroppingStarted",
346-
message = "BatchLogProcessor dropped a LogRecord due to queue full/internal errors. No further log will be emitted for further drops until Shutdown. During Shutdown time, a log will be emitted with exact count of total logs dropped.");
346+
message = "BatchLogProcessor dropped a LogRecord due to queue full. No further log will be emitted for further drops until Shutdown. During Shutdown time, a log will be emitted with exact count of total logs dropped.");
347347
}
348348
}
349349
Err(mpsc::TrySendError::Disconnected(_)) => {
@@ -376,9 +376,9 @@ impl LogProcessor for BatchLogProcessor {
376376
// If the control message could not be sent, emit a warning.
377377
otel_debug!(
378378
name: "BatchLogProcessor.ForceFlush.ControlChannelFull",
379-
message = "Control message to flush the worker thread could not be sent as the control channel is full. This can occur if user repeatedily calls force_flush without finishing the previous call."
379+
message = "Control message to flush the worker thread could not be sent as the control channel is full. This can occur if user repeatedily calls force_flush/shutdown without finishing the previous call."
380380
);
381-
LogResult::Err(LogError::Other("ForceFlush cannot be performed as Control channel is full. This can occur if user repeatedily calls force_flush without finishing the previous call.".into()))
381+
LogResult::Err(LogError::Other("ForceFlush cannot be performed as Control channel is full. This can occur if user repeatedily calls force_flush/shutdown without finishing the previous call.".into()))
382382
}
383383
Err(mpsc::TrySendError::Disconnected(_)) => {
384384
// Given background thread is the only receiver, and it's
@@ -404,7 +404,7 @@ impl LogProcessor for BatchLogProcessor {
404404
name: "BatchLogProcessor.LogsDropped",
405405
dropped_logs_count = dropped_logs,
406406
max_queue_size = max_queue_size,
407-
message = "Logs were dropped due to a queue being full or other error. The count represents the total count of log records dropped in the lifetime of this BatchLogProcessor. Consider increasing the queue size and/or decrease delay between intervals."
407+
message = "Logs were dropped due to a queue being full. The count represents the total count of log records dropped in the lifetime of this BatchLogProcessor. Consider increasing the queue size and/or decrease delay between intervals."
408408
);
409409
}
410410

@@ -442,9 +442,9 @@ impl LogProcessor for BatchLogProcessor {
442442
// If the control message could not be sent, emit a warning.
443443
otel_debug!(
444444
name: "BatchLogProcessor.Shutdown.ControlChannelFull",
445-
message = "Control message to shutdown the worker thread could not be sent as the control channel is full. This can occur if user repeatedily calls force_flush without finishing the previous call."
445+
message = "Control message to shutdown the worker thread could not be sent as the control channel is full. This can occur if user repeatedily calls force_flush/shutdown without finishing the previous call."
446446
);
447-
LogResult::Err(LogError::Other("Shutdown cannot be performed as Control channel is full. This can occur if user repeatedily calls force_flush without finishing the previous call.".into()))
447+
LogResult::Err(LogError::Other("Shutdown cannot be performed as Control channel is full. This can occur if user repeatedily calls force_flush/shutdown without finishing the previous call.".into()))
448448
}
449449
Err(mpsc::TrySendError::Disconnected(_)) => {
450450
// Given background thread is the only receiver, and it's

opentelemetry-sdk/src/metrics/periodic_reader.rs

+16-26
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,13 @@ impl PeriodicReaderInner {
317317
.produce(rm)?;
318318
Ok(())
319319
} else {
320-
Err(MetricError::Other("pipeline is not registered".into()))
320+
otel_warn!(
321+
name: "PeriodReader.MeterProviderNotRegistered",
322+
message = "PeriodicReader is not registered with MeterProvider. Metrics will not be collected. \
323+
This occurs when a periodic reader is created but not associated with a MeterProvider \
324+
by calling `.with_reader(reader)` on MeterProviderBuilder."
325+
);
326+
Err(MetricError::Other("MeterProvider is not registered".into()))
321327
}
322328
}
323329

@@ -472,7 +478,7 @@ impl MetricReader for PeriodicReader {
472478
mod tests {
473479
use super::PeriodicReader;
474480
use crate::{
475-
error::ShutdownResult,
481+
error::{ShutdownError, ShutdownResult},
476482
metrics::{
477483
data::ResourceMetrics, exporter::PushMetricExporter, reader::MetricReader,
478484
InMemoryMetricExporter, MetricError, MetricResult, SdkMeterProvider, Temporality,
@@ -594,11 +600,8 @@ mod tests {
594600
#[test]
595601
fn shutdown_repeat() {
596602
// Arrange
597-
let interval = std::time::Duration::from_millis(1);
598603
let exporter = InMemoryMetricExporter::default();
599-
let reader = PeriodicReader::builder(exporter.clone())
600-
.with_interval(interval)
601-
.build();
604+
let reader = PeriodicReader::builder(exporter.clone()).build();
602605

603606
let meter_provider = SdkMeterProvider::builder().with_reader(reader).build();
604607
let result = meter_provider.shutdown();
@@ -607,20 +610,19 @@ mod tests {
607610
// calling shutdown again should return Err
608611
let result = meter_provider.shutdown();
609612
assert!(result.is_err());
613+
assert!(matches!(result, Err(ShutdownError::AlreadyShutdown)));
610614

611615
// calling shutdown again should return Err
612616
let result = meter_provider.shutdown();
613617
assert!(result.is_err());
618+
assert!(matches!(result, Err(ShutdownError::AlreadyShutdown)));
614619
}
615620

616621
#[test]
617622
fn flush_after_shutdown() {
618623
// Arrange
619-
let interval = std::time::Duration::from_millis(1);
620624
let exporter = InMemoryMetricExporter::default();
621-
let reader = PeriodicReader::builder(exporter.clone())
622-
.with_interval(interval)
623-
.build();
625+
let reader = PeriodicReader::builder(exporter.clone()).build();
624626

625627
let meter_provider = SdkMeterProvider::builder().with_reader(reader).build();
626628
let result = meter_provider.force_flush();
@@ -637,11 +639,8 @@ mod tests {
637639
#[test]
638640
fn flush_repeat() {
639641
// Arrange
640-
let interval = std::time::Duration::from_millis(1);
641642
let exporter = InMemoryMetricExporter::default();
642-
let reader = PeriodicReader::builder(exporter.clone())
643-
.with_interval(interval)
644-
.build();
643+
let reader = PeriodicReader::builder(exporter.clone()).build();
645644

646645
let meter_provider = SdkMeterProvider::builder().with_reader(reader).build();
647646
let result = meter_provider.force_flush();
@@ -655,11 +654,8 @@ mod tests {
655654
#[test]
656655
fn periodic_reader_without_pipeline() {
657656
// Arrange
658-
let interval = std::time::Duration::from_millis(1);
659657
let exporter = InMemoryMetricExporter::default();
660-
let reader = PeriodicReader::builder(exporter.clone())
661-
.with_interval(interval)
662-
.build();
658+
let reader = PeriodicReader::builder(exporter.clone()).build();
663659

664660
let rm = &mut ResourceMetrics {
665661
resource: Resource::empty(),
@@ -801,11 +797,8 @@ mod tests {
801797

802798
fn collection_helper(trigger: fn(SdkMeterProvider)) {
803799
// Arrange
804-
let interval = std::time::Duration::from_millis(10);
805800
let exporter = InMemoryMetricExporter::default();
806-
let reader = PeriodicReader::builder(exporter.clone())
807-
.with_interval(interval)
808-
.build();
801+
let reader = PeriodicReader::builder(exporter.clone()).build();
809802
let (sender, receiver) = mpsc::channel();
810803

811804
let meter_provider = SdkMeterProvider::builder().with_reader(reader).build();
@@ -919,11 +912,8 @@ mod tests {
919912
}
920913

921914
fn tokio_async_inside_observable_callback_helper(use_current_tokio_runtime: bool) {
922-
let interval = std::time::Duration::from_millis(10);
923915
let exporter = InMemoryMetricExporter::default();
924-
let reader = PeriodicReader::builder(exporter.clone())
925-
.with_interval(interval)
926-
.build();
916+
let reader = PeriodicReader::builder(exporter.clone()).build();
927917

928918
let meter_provider = SdkMeterProvider::builder().with_reader(reader).build();
929919
let meter = meter_provider.meter("test");

0 commit comments

Comments
 (0)