From 19375144678556f53cf9955aaf7588fda1e832cc Mon Sep 17 00:00:00 2001 From: Lalit Date: Sun, 27 Oct 2024 17:52:12 -0700 Subject: [PATCH 01/11] fix --- opentelemetry-sdk/src/trace/config.rs | 45 ++++++++++--------- opentelemetry-sdk/src/trace/span_processor.rs | 34 ++++++++++---- 2 files changed, 50 insertions(+), 29 deletions(-) diff --git a/opentelemetry-sdk/src/trace/config.rs b/opentelemetry-sdk/src/trace/config.rs index 368f69dacd..f04b2ba173 100644 --- a/opentelemetry-sdk/src/trace/config.rs +++ b/opentelemetry-sdk/src/trace/config.rs @@ -4,7 +4,7 @@ //! can be set for the default OpenTelemetry limits and Sampler. use crate::trace::{span_limit::SpanLimits, IdGenerator, RandomIdGenerator, Sampler, ShouldSample}; use crate::Resource; -use opentelemetry::global::{handle_error, Error}; +use opentelemetry::{otel_debug, otel_warn}; use std::borrow::Cow; use std::env; use std::str::FromStr; @@ -129,9 +129,9 @@ impl Default for Config { if let Some(r) = ratio { Box::new(Sampler::TraceIdRatioBased(r)) } else { - handle_error( - Error::Other(String::from( - "Missing or invalid OTEL_TRACES_SAMPLER_ARG value. Falling back to default: 1.0")) + otel_warn!( + name: "TracesSampler.TraceIdRatio.Error", + message= "Missing or invalid OTEL_TRACES_SAMPLER_ARG env variable. Falling back to default: 1.0" ); Box::new(Sampler::TraceIdRatioBased(1.0)) } @@ -149,37 +149,42 @@ impl Default for Config { r, )))) } else { - handle_error( - Error::Other(String::from( - "Missing or invalid OTEL_TRACES_SAMPLER_ARG value. Falling back to default: 1.0" - ))); + otel_warn!( + name: "TracesSampler.ParentBasedTraceIdRatio.Error", + message = "Missing or invalid OTEL_TRACES_SAMPLER_ARG env variable. Falling back to default: 1.0" + ); Box::new(Sampler::ParentBased(Box::new(Sampler::TraceIdRatioBased( 1.0, )))) } } "parentbased_jaeger_remote" => { - handle_error( - Error::Other(String::from( - "Unimplemented parentbased_jaeger_remote sampler. Falling back to default: parentbased_always_on" - ))); + otel_debug!( + name: "TracesSampler.ParentBasedJaegerRemote.Error", + message = "Unimplemented parentbased_jaeger_remote sampler. Falling back to default: parentbased_always_on" + ); Box::new(Sampler::ParentBased(Box::new(Sampler::AlwaysOn))) } "jaeger_remote" => { - handle_error( - Error::Other(String::from("Unimplemented jaeger_remote sampler. Falling back to default: parentbased_always_on"))); + otel_debug!( + name: "TracesSampler.JaegerRemote.Error", + message = "Unimplemented jaeger_remote sampler. Falling back to default: parentbased_always_on" + ); Box::new(Sampler::ParentBased(Box::new(Sampler::AlwaysOn))) } "xray" => { - handle_error( - Error::Other(String::from("Unimplemented xray sampler. Falling back to default: parentbased_always_on"))); + otel_debug!( + name: "TracesSampler.Xray.Error", + message = "Unimplemented xray sampler. Falling back to default: parentbased_always_on" + ); Box::new(Sampler::ParentBased(Box::new(Sampler::AlwaysOn))) } s => { - handle_error( - Error::Other(format!("Unrecognised OTEL_TRACES_SAMPLER value: {}. Falling back to default: parentbased_always_on", - s - ))); + otel_warn!( + name: "TracesSampler.Unknown.Error", + message = "Unrecognised OTEL_TRACES_SAMPLER env variable. Falling back to default: parentbased_always_on", + sampler = s + ); Box::new(Sampler::ParentBased(Box::new(Sampler::AlwaysOn))) } } diff --git a/opentelemetry-sdk/src/trace/span_processor.rs b/opentelemetry-sdk/src/trace/span_processor.rs index be0921c51d..a2665c0cbb 100644 --- a/opentelemetry-sdk/src/trace/span_processor.rs +++ b/opentelemetry-sdk/src/trace/span_processor.rs @@ -45,7 +45,7 @@ use futures_util::{ stream::{self, FusedStream, FuturesUnordered}, StreamExt as _, }; -use opentelemetry::global; +use opentelemetry::{otel_debug, otel_error}; use opentelemetry::{ trace::{TraceError, TraceResult}, Context, @@ -134,7 +134,10 @@ impl SpanProcessor for SimpleSpanProcessor { .and_then(|mut exporter| futures_executor::block_on(exporter.export(vec![span]))); if let Err(err) = result { - global::handle_error(err); + otel_error!( + name: "SimpleProcessor.OnEnd.Error", + reason = format!("{:?}", err) + ); } } @@ -246,7 +249,10 @@ impl SpanProcessor for BatchSpanProcessor { let result = self.message_sender.try_send(BatchMessage::ExportSpan(span)); if let Err(err) = result { - global::handle_error(TraceError::Other(err.into())); + otel_error!( + name: "BatchProcessor.OnEnd.Error", + reason = format!("{:?}", TraceError::Other(err.into())) + ); } } @@ -313,14 +319,21 @@ impl BatchSpanProcessorInternal { let result = export_task.await; if let Some(channel) = res_channel { + // If a response channel is provided, attempt to send the export result through it. if let Err(result) = channel.send(result) { - global::handle_error(TraceError::from(format!( - "failed to send flush result: {:?}", - result - ))); + otel_debug!( + name: "BatchSpanProcessor.Flush.SendResultError", + reason = format!("{:?}", result) + ); } } else if let Err(err) = result { - global::handle_error(err); + // If no channel is provided and the export operation encountered an error, + // log the error directly here. + otel_error!( + name: "BatchSpanProcessor.Flush.ExportError", + reason = format!("{:?}", err), + message = "Failed during the export process" + ); } Ok(()) @@ -354,7 +367,10 @@ impl BatchSpanProcessorInternal { let export_task = self.export(); let task = async move { if let Err(err) = export_task.await { - global::handle_error(err); + otel_error!( + name: "BatchSpanProcessor.Export.Error", + error = format!("{}", err) + ); } Ok(()) From 9372fc4e6f4013184aae699f6b3b1b06c7411d6e Mon Sep 17 00:00:00 2001 From: Lalit Date: Sun, 27 Oct 2024 18:13:41 -0700 Subject: [PATCH 02/11] change error to reason --- opentelemetry-sdk/src/trace/span_processor.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opentelemetry-sdk/src/trace/span_processor.rs b/opentelemetry-sdk/src/trace/span_processor.rs index a2665c0cbb..0fc6d644f8 100644 --- a/opentelemetry-sdk/src/trace/span_processor.rs +++ b/opentelemetry-sdk/src/trace/span_processor.rs @@ -369,7 +369,7 @@ impl BatchSpanProcessorInternal { if let Err(err) = export_task.await { otel_error!( name: "BatchSpanProcessor.Export.Error", - error = format!("{}", err) + reason = format!("{}", err) ); } From f619e60c8a4d34a6197ac4eebe7da42705c49d84 Mon Sep 17 00:00:00 2001 From: Lalit Date: Sun, 27 Oct 2024 21:11:47 -0700 Subject: [PATCH 03/11] review comments --- opentelemetry-sdk/src/trace/config.rs | 33 +++++++++++++++------------ 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/opentelemetry-sdk/src/trace/config.rs b/opentelemetry-sdk/src/trace/config.rs index f04b2ba173..d24503e44a 100644 --- a/opentelemetry-sdk/src/trace/config.rs +++ b/opentelemetry-sdk/src/trace/config.rs @@ -130,8 +130,8 @@ impl Default for Config { Box::new(Sampler::TraceIdRatioBased(r)) } else { otel_warn!( - name: "TracesSampler.TraceIdRatio.Error", - message= "Missing or invalid OTEL_TRACES_SAMPLER_ARG env variable. Falling back to default: 1.0" + name: "Sampler.TraceIdRatio.InvalidArgument", + message = "OTEL_TRACES_SAMPLER is set to 'traceidratio' but OTEL_TRACES_SAMPLER_ARG environment variable is missing or invalid. OTEL_TRACES_SAMPLER_ARG must be a valid float between 0.0 and 1.0 representing the desired sampling probability (0.0 = no traces sampled, 1.0 = all traces sampled, 0.5 = 50% of traces sampled). Falling back to default ratio: 1.0 (100% sampling)" ); Box::new(Sampler::TraceIdRatioBased(1.0)) } @@ -150,8 +150,8 @@ impl Default for Config { )))) } else { otel_warn!( - name: "TracesSampler.ParentBasedTraceIdRatio.Error", - message = "Missing or invalid OTEL_TRACES_SAMPLER_ARG env variable. Falling back to default: 1.0" + name: "Sampler.ParentBasedTraceIdRatio.InvalidArgument", + message = "OTEL_TRACES_SAMPLER is set to 'parentbased_traceidratio' but OTEL_TRACES_SAMPLER_ARG environment variable is missing or invalid. OTEL_TRACES_SAMPLER_ARG must be a valid float between 0.0 and 1.0 representing the desired sampling probability (0.0 = no traces sampled, 1.0 = all traces sampled, 0.5 = 50% of traces sampled). Falling back to default ratio: 1.0 (100% sampling)" ); Box::new(Sampler::ParentBased(Box::new(Sampler::TraceIdRatioBased( 1.0, @@ -159,30 +159,33 @@ impl Default for Config { } } "parentbased_jaeger_remote" => { - otel_debug!( - name: "TracesSampler.ParentBasedJaegerRemote.Error", - message = "Unimplemented parentbased_jaeger_remote sampler. Falling back to default: parentbased_always_on" + otel_warn!( + name: "Sampler.ParentBasedJaegerRemote.Unsupported", + message = "ParentBased JaegerRemote sampler is not implemented in this SDK version. Using fallback sampler: ParentBased(AlwaysOn). Configure an alternative sampler using OTEL_TRACES_SAMPLER" ); Box::new(Sampler::ParentBased(Box::new(Sampler::AlwaysOn))) } "jaeger_remote" => { - otel_debug!( - name: "TracesSampler.JaegerRemote.Error", - message = "Unimplemented jaeger_remote sampler. Falling back to default: parentbased_always_on" + otel_warn!( + name: "Sampler.JaegerRemote.Unsupported", + message = "JaegerRemote sampler is not implemented in this SDK version. Using fallback sampler: ParentBased(AlwaysOn). Configure an alternative sampler using OTEL_TRACES_SAMPLER" ); Box::new(Sampler::ParentBased(Box::new(Sampler::AlwaysOn))) } "xray" => { - otel_debug!( - name: "TracesSampler.Xray.Error", - message = "Unimplemented xray sampler. Falling back to default: parentbased_always_on" + otel_warn!( + name: "Sampler.XRay.Unsupported", + message = "AWS X-Ray sampler is not implemented in this SDK version. Using fallback sampler: ParentBased(AlwaysOn). Configure an alternative sampler using OTEL_TRACES_SAMPLER" ); Box::new(Sampler::ParentBased(Box::new(Sampler::AlwaysOn))) } s => { otel_warn!( - name: "TracesSampler.Unknown.Error", - message = "Unrecognised OTEL_TRACES_SAMPLER env variable. Falling back to default: parentbased_always_on", + name: "Sampler.Configuration.InvalidSamplerType", + message = format!( + "Unrecognized sampler type '{}' in OTEL_TRACES_SAMPLER environment variable. Valid values are: always_on, always_off, traceidratio, parentbased_always_on, parentbased_always_off, parentbased_traceidratio. Using fallback sampler: ParentBased(AlwaysOn)", + s + ), sampler = s ); Box::new(Sampler::ParentBased(Box::new(Sampler::AlwaysOn))) From d82829aa0c0149b9c6e2e7a29802c9289f332cad Mon Sep 17 00:00:00 2001 From: Lalit Date: Sun, 27 Oct 2024 21:12:34 -0700 Subject: [PATCH 04/11] review comment, remove unused import --- opentelemetry-sdk/src/trace/config.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opentelemetry-sdk/src/trace/config.rs b/opentelemetry-sdk/src/trace/config.rs index d24503e44a..991131d646 100644 --- a/opentelemetry-sdk/src/trace/config.rs +++ b/opentelemetry-sdk/src/trace/config.rs @@ -4,7 +4,7 @@ //! can be set for the default OpenTelemetry limits and Sampler. use crate::trace::{span_limit::SpanLimits, IdGenerator, RandomIdGenerator, Sampler, ShouldSample}; use crate::Resource; -use opentelemetry::{otel_debug, otel_warn}; +use opentelemetry::otel_warn; use std::borrow::Cow; use std::env; use std::str::FromStr; From 6f2fbb33317bfc279d9b3a6e7019632334bc6c0f Mon Sep 17 00:00:00 2001 From: Lalit Date: Tue, 29 Oct 2024 00:10:10 -0700 Subject: [PATCH 05/11] review comment --- opentelemetry-sdk/src/trace/config.rs | 6 +++--- opentelemetry-sdk/src/trace/span_processor.rs | 9 +++++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/opentelemetry-sdk/src/trace/config.rs b/opentelemetry-sdk/src/trace/config.rs index 991131d646..97a321e535 100644 --- a/opentelemetry-sdk/src/trace/config.rs +++ b/opentelemetry-sdk/src/trace/config.rs @@ -161,21 +161,21 @@ impl Default for Config { "parentbased_jaeger_remote" => { otel_warn!( name: "Sampler.ParentBasedJaegerRemote.Unsupported", - message = "ParentBased JaegerRemote sampler is not implemented in this SDK version. Using fallback sampler: ParentBased(AlwaysOn). Configure an alternative sampler using OTEL_TRACES_SAMPLER" + message = "OTEL_TRACES_SAMPLER is set to 'parentbased_jaeger_remote' which is not implemented in this SDK version. Using fallback sampler: ParentBased(AlwaysOn). Configure an alternative sampler using OTEL_TRACES_SAMPLER" ); Box::new(Sampler::ParentBased(Box::new(Sampler::AlwaysOn))) } "jaeger_remote" => { otel_warn!( name: "Sampler.JaegerRemote.Unsupported", - message = "JaegerRemote sampler is not implemented in this SDK version. Using fallback sampler: ParentBased(AlwaysOn). Configure an alternative sampler using OTEL_TRACES_SAMPLER" + message = "OTEL_TRACES_SAMPLER is set to 'jaeger_remote' which is implemented in this SDK version. Using fallback sampler: ParentBased(AlwaysOn). Configure an alternative sampler using OTEL_TRACES_SAMPLER" ); Box::new(Sampler::ParentBased(Box::new(Sampler::AlwaysOn))) } "xray" => { otel_warn!( name: "Sampler.XRay.Unsupported", - message = "AWS X-Ray sampler is not implemented in this SDK version. Using fallback sampler: ParentBased(AlwaysOn). Configure an alternative sampler using OTEL_TRACES_SAMPLER" + message = "OTEL_TRACES_SAMPLER is set to 'xray'. AWS X-Ray sampler is not implemented in this SDK version. Using fallback sampler: ParentBased(AlwaysOn). Configure an alternative sampler using OTEL_TRACES_SAMPLER" ); Box::new(Sampler::ParentBased(Box::new(Sampler::AlwaysOn))) } diff --git a/opentelemetry-sdk/src/trace/span_processor.rs b/opentelemetry-sdk/src/trace/span_processor.rs index 0fc6d644f8..7016972a9f 100644 --- a/opentelemetry-sdk/src/trace/span_processor.rs +++ b/opentelemetry-sdk/src/trace/span_processor.rs @@ -134,7 +134,8 @@ impl SpanProcessor for SimpleSpanProcessor { .and_then(|mut exporter| futures_executor::block_on(exporter.export(vec![span]))); if let Err(err) = result { - otel_error!( + // TODO: check error type, and log `error` only if the error is user-actiobable, else log `debug` + otel_debug!( name: "SimpleProcessor.OnEnd.Error", reason = format!("{:?}", err) ); @@ -249,8 +250,8 @@ impl SpanProcessor for BatchSpanProcessor { let result = self.message_sender.try_send(BatchMessage::ExportSpan(span)); if let Err(err) = result { - otel_error!( - name: "BatchProcessor.OnEnd.Error", + otel_debug!( + name: "BatchSpanProcessor.OnEnd.SendResultError", reason = format!("{:?}", TraceError::Other(err.into())) ); } @@ -368,7 +369,7 @@ impl BatchSpanProcessorInternal { let task = async move { if let Err(err) = export_task.await { otel_error!( - name: "BatchSpanProcessor.Export.Error", + name: "BatchSpanProcessor.OnEnd.Error", reason = format!("{}", err) ); } From f1cbe29e46937b4e0f536bf38d6faeeb5e81ee62 Mon Sep 17 00:00:00 2001 From: Lalit Date: Tue, 29 Oct 2024 00:13:47 -0700 Subject: [PATCH 06/11] Added TODO --- opentelemetry-sdk/src/trace/span_processor.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/opentelemetry-sdk/src/trace/span_processor.rs b/opentelemetry-sdk/src/trace/span_processor.rs index 7016972a9f..b949b10a8d 100644 --- a/opentelemetry-sdk/src/trace/span_processor.rs +++ b/opentelemetry-sdk/src/trace/span_processor.rs @@ -330,6 +330,7 @@ impl BatchSpanProcessorInternal { } else if let Err(err) = result { // If no channel is provided and the export operation encountered an error, // log the error directly here. + // TODO: Consider returning the status instead of logging it. otel_error!( name: "BatchSpanProcessor.Flush.ExportError", reason = format!("{:?}", err), From b2d8ce674eb3a9c00b5fa3b4dcc07f9348d4ff34 Mon Sep 17 00:00:00 2001 From: Lalit Kumar Bhasin Date: Tue, 29 Oct 2024 11:58:02 -0700 Subject: [PATCH 07/11] review comment --- opentelemetry-sdk/src/trace/config.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/opentelemetry-sdk/src/trace/config.rs b/opentelemetry-sdk/src/trace/config.rs index 97a321e535..17443468c7 100644 --- a/opentelemetry-sdk/src/trace/config.rs +++ b/opentelemetry-sdk/src/trace/config.rs @@ -130,7 +130,7 @@ impl Default for Config { Box::new(Sampler::TraceIdRatioBased(r)) } else { otel_warn!( - name: "Sampler.TraceIdRatio.InvalidArgument", + name: "TracerProvider.Config.Sampler.InvalidArgument", message = "OTEL_TRACES_SAMPLER is set to 'traceidratio' but OTEL_TRACES_SAMPLER_ARG environment variable is missing or invalid. OTEL_TRACES_SAMPLER_ARG must be a valid float between 0.0 and 1.0 representing the desired sampling probability (0.0 = no traces sampled, 1.0 = all traces sampled, 0.5 = 50% of traces sampled). Falling back to default ratio: 1.0 (100% sampling)" ); Box::new(Sampler::TraceIdRatioBased(1.0)) @@ -150,7 +150,7 @@ impl Default for Config { )))) } else { otel_warn!( - name: "Sampler.ParentBasedTraceIdRatio.InvalidArgument", + name: "TracerProvider.Config.Sampler.InvalidArgument", message = "OTEL_TRACES_SAMPLER is set to 'parentbased_traceidratio' but OTEL_TRACES_SAMPLER_ARG environment variable is missing or invalid. OTEL_TRACES_SAMPLER_ARG must be a valid float between 0.0 and 1.0 representing the desired sampling probability (0.0 = no traces sampled, 1.0 = all traces sampled, 0.5 = 50% of traces sampled). Falling back to default ratio: 1.0 (100% sampling)" ); Box::new(Sampler::ParentBased(Box::new(Sampler::TraceIdRatioBased( @@ -160,28 +160,28 @@ impl Default for Config { } "parentbased_jaeger_remote" => { otel_warn!( - name: "Sampler.ParentBasedJaegerRemote.Unsupported", + name: "TracerProvider.Config.Sampler.Unsupported", message = "OTEL_TRACES_SAMPLER is set to 'parentbased_jaeger_remote' which is not implemented in this SDK version. Using fallback sampler: ParentBased(AlwaysOn). Configure an alternative sampler using OTEL_TRACES_SAMPLER" ); Box::new(Sampler::ParentBased(Box::new(Sampler::AlwaysOn))) } "jaeger_remote" => { otel_warn!( - name: "Sampler.JaegerRemote.Unsupported", + name: "TracerProvider.Config.Sampler.Unsupported", message = "OTEL_TRACES_SAMPLER is set to 'jaeger_remote' which is implemented in this SDK version. Using fallback sampler: ParentBased(AlwaysOn). Configure an alternative sampler using OTEL_TRACES_SAMPLER" ); Box::new(Sampler::ParentBased(Box::new(Sampler::AlwaysOn))) } "xray" => { otel_warn!( - name: "Sampler.XRay.Unsupported", + name: "TracerProvider.Config.Sampler.Unsupported", message = "OTEL_TRACES_SAMPLER is set to 'xray'. AWS X-Ray sampler is not implemented in this SDK version. Using fallback sampler: ParentBased(AlwaysOn). Configure an alternative sampler using OTEL_TRACES_SAMPLER" ); Box::new(Sampler::ParentBased(Box::new(Sampler::AlwaysOn))) } s => { otel_warn!( - name: "Sampler.Configuration.InvalidSamplerType", + name: "TracerProvider.Config.Sampler.InvalidSamplerType", message = format!( "Unrecognized sampler type '{}' in OTEL_TRACES_SAMPLER environment variable. Valid values are: always_on, always_off, traceidratio, parentbased_always_on, parentbased_always_off, parentbased_traceidratio. Using fallback sampler: ParentBased(AlwaysOn)", s From c64e9ffd8f35e6fc543c2204c9947756376a7400 Mon Sep 17 00:00:00 2001 From: Lalit Kumar Bhasin Date: Fri, 1 Nov 2024 11:13:17 -0700 Subject: [PATCH 08/11] log sampler env var, and better event naming for bsp --- opentelemetry-sdk/src/trace/config.rs | 10 ++++++---- opentelemetry-sdk/src/trace/span_processor.rs | 4 ++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/opentelemetry-sdk/src/trace/config.rs b/opentelemetry-sdk/src/trace/config.rs index 17443468c7..b9cc3e1337 100644 --- a/opentelemetry-sdk/src/trace/config.rs +++ b/opentelemetry-sdk/src/trace/config.rs @@ -125,13 +125,14 @@ impl Default for Config { "always_on" => Box::new(Sampler::AlwaysOn), "always_off" => Box::new(Sampler::AlwaysOff), "traceidratio" => { - let ratio = sampler_arg.and_then(|r| r.parse::().ok()); + let ratio = sampler_arg.as_ref().and_then(|r| r.parse::().ok()); if let Some(r) = ratio { Box::new(Sampler::TraceIdRatioBased(r)) } else { otel_warn!( name: "TracerProvider.Config.Sampler.InvalidArgument", - message = "OTEL_TRACES_SAMPLER is set to 'traceidratio' but OTEL_TRACES_SAMPLER_ARG environment variable is missing or invalid. OTEL_TRACES_SAMPLER_ARG must be a valid float between 0.0 and 1.0 representing the desired sampling probability (0.0 = no traces sampled, 1.0 = all traces sampled, 0.5 = 50% of traces sampled). Falling back to default ratio: 1.0 (100% sampling)" + message = "OTEL_TRACES_SAMPLER is set to 'traceidratio' but OTEL_TRACES_SAMPLER_ARG environment variable is missing or invalid. OTEL_TRACES_SAMPLER_ARG must be a valid float between 0.0 and 1.0 representing the desired sampling probability (0.0 = no traces sampled, 1.0 = all traces sampled, 0.5 = 50% of traces sampled). Falling back to default ratio: 1.0 (100% sampling)", + otel_traces_sampler_arg = format!("{:?}", sampler_arg) ); Box::new(Sampler::TraceIdRatioBased(1.0)) } @@ -143,7 +144,7 @@ impl Default for Config { Box::new(Sampler::ParentBased(Box::new(Sampler::AlwaysOff))) } "parentbased_traceidratio" => { - let ratio = sampler_arg.and_then(|r| r.parse::().ok()); + let ratio = sampler_arg.as_ref().and_then(|r| r.parse::().ok()); if let Some(r) = ratio { Box::new(Sampler::ParentBased(Box::new(Sampler::TraceIdRatioBased( r, @@ -151,7 +152,8 @@ impl Default for Config { } else { otel_warn!( name: "TracerProvider.Config.Sampler.InvalidArgument", - message = "OTEL_TRACES_SAMPLER is set to 'parentbased_traceidratio' but OTEL_TRACES_SAMPLER_ARG environment variable is missing or invalid. OTEL_TRACES_SAMPLER_ARG must be a valid float between 0.0 and 1.0 representing the desired sampling probability (0.0 = no traces sampled, 1.0 = all traces sampled, 0.5 = 50% of traces sampled). Falling back to default ratio: 1.0 (100% sampling)" + message = "OTEL_TRACES_SAMPLER is set to 'parentbased_traceidratio' but OTEL_TRACES_SAMPLER_ARG environment variable is missing or invalid. OTEL_TRACES_SAMPLER_ARG must be a valid float between 0.0 and 1.0 representing the desired sampling probability (0.0 = no traces sampled, 1.0 = all traces sampled, 0.5 = 50% of traces sampled). Falling back to default ratio: 1.0 (100% sampling)", + otel_traces_sampler_arg = format!("{:?}", sampler_arg) ); Box::new(Sampler::ParentBased(Box::new(Sampler::TraceIdRatioBased( 1.0, diff --git a/opentelemetry-sdk/src/trace/span_processor.rs b/opentelemetry-sdk/src/trace/span_processor.rs index b949b10a8d..b490ff205c 100644 --- a/opentelemetry-sdk/src/trace/span_processor.rs +++ b/opentelemetry-sdk/src/trace/span_processor.rs @@ -251,7 +251,7 @@ impl SpanProcessor for BatchSpanProcessor { if let Err(err) = result { otel_debug!( - name: "BatchSpanProcessor.OnEnd.SendResultError", + name: "BatchSpanProcessor.Export.SendResultError", reason = format!("{:?}", TraceError::Other(err.into())) ); } @@ -370,7 +370,7 @@ impl BatchSpanProcessorInternal { let task = async move { if let Err(err) = export_task.await { otel_error!( - name: "BatchSpanProcessor.OnEnd.Error", + name: "BatchSpanProcessor.Export.Error", reason = format!("{}", err) ); } From 4fb39458652f12a27cc26ede35d9aa63ec32c91b Mon Sep 17 00:00:00 2001 From: Lalit Kumar Bhasin Date: Fri, 1 Nov 2024 14:04:04 -0700 Subject: [PATCH 09/11] remove sampler attribute in otel macro call --- opentelemetry-sdk/src/trace/config.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/opentelemetry-sdk/src/trace/config.rs b/opentelemetry-sdk/src/trace/config.rs index b9cc3e1337..94ba38bcff 100644 --- a/opentelemetry-sdk/src/trace/config.rs +++ b/opentelemetry-sdk/src/trace/config.rs @@ -188,7 +188,6 @@ impl Default for Config { "Unrecognized sampler type '{}' in OTEL_TRACES_SAMPLER environment variable. Valid values are: always_on, always_off, traceidratio, parentbased_always_on, parentbased_always_off, parentbased_traceidratio. Using fallback sampler: ParentBased(AlwaysOn)", s ), - sampler = s ); Box::new(Sampler::ParentBased(Box::new(Sampler::AlwaysOn))) } From 000906101f0b02ed25d139e80b73ce0bb08b45b1 Mon Sep 17 00:00:00 2001 From: Lalit Kumar Bhasin Date: Sat, 2 Nov 2024 10:57:40 -0700 Subject: [PATCH 10/11] review comments --- opentelemetry-sdk/src/trace/config.rs | 12 ++++++------ opentelemetry-sdk/src/trace/span_processor.rs | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/opentelemetry-sdk/src/trace/config.rs b/opentelemetry-sdk/src/trace/config.rs index 94ba38bcff..b6ad2b150e 100644 --- a/opentelemetry-sdk/src/trace/config.rs +++ b/opentelemetry-sdk/src/trace/config.rs @@ -130,7 +130,7 @@ impl Default for Config { Box::new(Sampler::TraceIdRatioBased(r)) } else { otel_warn!( - name: "TracerProvider.Config.Sampler.InvalidArgument", + name: "TracerProvider.Config.InvalidSamplerArgument", message = "OTEL_TRACES_SAMPLER is set to 'traceidratio' but OTEL_TRACES_SAMPLER_ARG environment variable is missing or invalid. OTEL_TRACES_SAMPLER_ARG must be a valid float between 0.0 and 1.0 representing the desired sampling probability (0.0 = no traces sampled, 1.0 = all traces sampled, 0.5 = 50% of traces sampled). Falling back to default ratio: 1.0 (100% sampling)", otel_traces_sampler_arg = format!("{:?}", sampler_arg) ); @@ -151,7 +151,7 @@ impl Default for Config { )))) } else { otel_warn!( - name: "TracerProvider.Config.Sampler.InvalidArgument", + name: "TracerProvider.Config.InvalidSamplerArgument", message = "OTEL_TRACES_SAMPLER is set to 'parentbased_traceidratio' but OTEL_TRACES_SAMPLER_ARG environment variable is missing or invalid. OTEL_TRACES_SAMPLER_ARG must be a valid float between 0.0 and 1.0 representing the desired sampling probability (0.0 = no traces sampled, 1.0 = all traces sampled, 0.5 = 50% of traces sampled). Falling back to default ratio: 1.0 (100% sampling)", otel_traces_sampler_arg = format!("{:?}", sampler_arg) ); @@ -162,28 +162,28 @@ impl Default for Config { } "parentbased_jaeger_remote" => { otel_warn!( - name: "TracerProvider.Config.Sampler.Unsupported", + name: "TracerProvider.Config.UnsupportedSampler", message = "OTEL_TRACES_SAMPLER is set to 'parentbased_jaeger_remote' which is not implemented in this SDK version. Using fallback sampler: ParentBased(AlwaysOn). Configure an alternative sampler using OTEL_TRACES_SAMPLER" ); Box::new(Sampler::ParentBased(Box::new(Sampler::AlwaysOn))) } "jaeger_remote" => { otel_warn!( - name: "TracerProvider.Config.Sampler.Unsupported", + name: "TracerProvider.Config.UnsupportedSampler", message = "OTEL_TRACES_SAMPLER is set to 'jaeger_remote' which is implemented in this SDK version. Using fallback sampler: ParentBased(AlwaysOn). Configure an alternative sampler using OTEL_TRACES_SAMPLER" ); Box::new(Sampler::ParentBased(Box::new(Sampler::AlwaysOn))) } "xray" => { otel_warn!( - name: "TracerProvider.Config.Sampler.Unsupported", + name: "TracerProvider.Config.UnsupportedSampler", message = "OTEL_TRACES_SAMPLER is set to 'xray'. AWS X-Ray sampler is not implemented in this SDK version. Using fallback sampler: ParentBased(AlwaysOn). Configure an alternative sampler using OTEL_TRACES_SAMPLER" ); Box::new(Sampler::ParentBased(Box::new(Sampler::AlwaysOn))) } s => { otel_warn!( - name: "TracerProvider.Config.Sampler.InvalidSamplerType", + name: "TracerProvider.Config.InvalidSamplerType", message = format!( "Unrecognized sampler type '{}' in OTEL_TRACES_SAMPLER environment variable. Valid values are: always_on, always_off, traceidratio, parentbased_always_on, parentbased_always_off, parentbased_traceidratio. Using fallback sampler: ParentBased(AlwaysOn)", s diff --git a/opentelemetry-sdk/src/trace/span_processor.rs b/opentelemetry-sdk/src/trace/span_processor.rs index b490ff205c..9f26455bcc 100644 --- a/opentelemetry-sdk/src/trace/span_processor.rs +++ b/opentelemetry-sdk/src/trace/span_processor.rs @@ -251,7 +251,7 @@ impl SpanProcessor for BatchSpanProcessor { if let Err(err) = result { otel_debug!( - name: "BatchSpanProcessor.Export.SendResultError", + name: "BatchSpanProcessor.ExportQueueingFailed", reason = format!("{:?}", TraceError::Other(err.into())) ); } From f666a13efbe718ca695df70d17fb0984282fcc3f Mon Sep 17 00:00:00 2001 From: Lalit Kumar Bhasin Date: Sat, 2 Nov 2024 11:01:27 -0700 Subject: [PATCH 11/11] rename bsp queuing failed name --- opentelemetry-sdk/src/trace/span_processor.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opentelemetry-sdk/src/trace/span_processor.rs b/opentelemetry-sdk/src/trace/span_processor.rs index 9f26455bcc..97f3ad851b 100644 --- a/opentelemetry-sdk/src/trace/span_processor.rs +++ b/opentelemetry-sdk/src/trace/span_processor.rs @@ -251,7 +251,7 @@ impl SpanProcessor for BatchSpanProcessor { if let Err(err) = result { otel_debug!( - name: "BatchSpanProcessor.ExportQueueingFailed", + name: "BatchSpanProcessor.OnEnd.ExportQueueingFailed", reason = format!("{:?}", TraceError::Other(err.into())) ); }