1
0
mirror of https://github.com/actix/actix-extras.git synced 2025-02-23 10:53:02 +01:00

use import alias for otel versions (#29)

This commit is contained in:
Nick 2021-08-13 05:48:23 -04:00 committed by GitHub
parent 2bea16dd27
commit 431788e4d7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 27 additions and 108 deletions

View File

@ -244,11 +244,5 @@ pub use root_span_builder::{DefaultRootSpanBuilder, RootSpanBuilder};
#[doc(hidden)]
pub mod root_span_macro;
#[cfg(feature = "opentelemetry_0_13")]
mod otel_0_13;
#[cfg(feature = "opentelemetry_0_14")]
mod otel_0_14;
#[cfg(feature = "opentelemetry_0_15")]
mod otel_0_15;
#[cfg(any(feature = "opentelemetry_0_13", feature = "opentelemetry_0_14", feature = "opentelemetry_0_15"))]
mod otel;

View File

@ -1,5 +1,20 @@
use actix_web::dev::ServiceRequest;
use opentelemetry_0_13_pkg::propagation::Extractor;
#[cfg(feature = "opentelemetry_0_13")]
use opentelemetry_0_13_pkg as opentelemetry;
#[cfg(feature = "opentelemetry_0_14")]
use opentelemetry_0_14_pkg as opentelemetry;
#[cfg(feature = "opentelemetry_0_15")]
use opentelemetry_0_15_pkg as opentelemetry;
#[cfg(feature = "opentelemetry_0_13")]
use tracing_opentelemetry_0_12_pkg as tracing_opentelemetry;
#[cfg(feature = "opentelemetry_0_14")]
use tracing_opentelemetry_0_13_pkg as tracing_opentelemetry;
#[cfg(feature = "opentelemetry_0_15")]
use tracing_opentelemetry_0_14_pkg as tracing_opentelemetry;
use opentelemetry::propagation::Extractor;
pub(crate) struct RequestHeaderCarrier<'a> {
headers: &'a actix_web::http::HeaderMap,
@ -22,11 +37,11 @@ impl<'a> Extractor for RequestHeaderCarrier<'a> {
}
pub(crate) fn set_otel_parent(req: &ServiceRequest, span: &tracing::Span) {
use opentelemetry_0_13_pkg::trace::TraceContextExt as _;
use tracing_opentelemetry_0_12_pkg::OpenTelemetrySpanExt as _;
use opentelemetry::trace::TraceContextExt as _;
use tracing_opentelemetry::OpenTelemetrySpanExt as _;
let parent_context = opentelemetry_0_13_pkg::global::get_text_map_propagator(|propagator| {
propagator.extract(&crate::otel_0_13::RequestHeaderCarrier::new(req.headers()))
let parent_context = opentelemetry::global::get_text_map_propagator(|propagator| {
propagator.extract(&RequestHeaderCarrier::new(req.headers()))
});
span.set_parent(parent_context);
// If we have a remote parent span, this will be the parent's trace identifier.

View File

@ -1,36 +0,0 @@
use actix_web::dev::ServiceRequest;
use opentelemetry_0_14_pkg::propagation::Extractor;
pub(crate) struct RequestHeaderCarrier<'a> {
headers: &'a actix_web::http::HeaderMap,
}
impl<'a> RequestHeaderCarrier<'a> {
pub(crate) fn new(headers: &'a actix_web::http::HeaderMap) -> Self {
RequestHeaderCarrier { headers }
}
}
impl<'a> Extractor for RequestHeaderCarrier<'a> {
fn get(&self, key: &str) -> Option<&str> {
self.headers.get(key).and_then(|v| v.to_str().ok())
}
fn keys(&self) -> Vec<&str> {
self.headers.keys().map(|header| header.as_str()).collect()
}
}
pub(crate) fn set_otel_parent(req: &ServiceRequest, span: &tracing::Span) {
use opentelemetry_0_14_pkg::trace::TraceContextExt as _;
use tracing_opentelemetry_0_13_pkg::OpenTelemetrySpanExt as _;
let parent_context = opentelemetry_0_14_pkg::global::get_text_map_propagator(|propagator| {
propagator.extract(&crate::otel_0_14::RequestHeaderCarrier::new(req.headers()))
});
span.set_parent(parent_context);
// If we have a remote parent span, this will be the parent's trace identifier.
// If not, it will be the newly generated trace identifier with this request as root span.
let trace_id = span.context().span().span_context().trace_id().to_hex();
span.record("trace_id", &tracing::field::display(trace_id));
}

View File

@ -1,36 +0,0 @@
use actix_web::dev::ServiceRequest;
use opentelemetry_0_15_pkg::propagation::Extractor;
pub(crate) struct RequestHeaderCarrier<'a> {
headers: &'a actix_web::http::HeaderMap,
}
impl<'a> RequestHeaderCarrier<'a> {
pub(crate) fn new(headers: &'a actix_web::http::HeaderMap) -> Self {
RequestHeaderCarrier { headers }
}
}
impl<'a> Extractor for RequestHeaderCarrier<'a> {
fn get(&self, key: &str) -> Option<&str> {
self.headers.get(key).and_then(|v| v.to_str().ok())
}
fn keys(&self) -> Vec<&str> {
self.headers.keys().map(|header| header.as_str()).collect()
}
}
pub(crate) fn set_otel_parent(req: &ServiceRequest, span: &tracing::Span) {
use opentelemetry_0_15_pkg::trace::TraceContextExt as _;
use tracing_opentelemetry_0_14_pkg::OpenTelemetrySpanExt as _;
let parent_context = opentelemetry_0_15_pkg::global::get_text_map_propagator(|propagator| {
propagator.extract(&crate::otel_0_15::RequestHeaderCarrier::new(req.headers()))
});
span.set_parent(parent_context);
// If we have a remote parent span, this will be the parent's trace identifier.
// If not, it will be the newly generated trace identifier with this request as root span.
let trace_id = span.context().span().span_context().trace_id().to_hex();
span.record("trace_id", &tracing::field::display(trace_id));
}

View File

@ -97,14 +97,8 @@ macro_rules! root_span {
);
std::mem::drop(connection_info);
#[cfg(feature = "opentelemetry_0_13")]
$crate::root_span_macro::private::set_otel_parent_0_13(&$request, &span);
#[cfg(feature = "opentelemetry_0_14")]
$crate::root_span_macro::private::set_otel_parent_0_14(&$request, &span);
#[cfg(feature = "opentelemetry_0_15")]
$crate::root_span_macro::private::set_otel_parent_0_15(&$request, &span);
#[cfg(any(feature = "opentelemetry_0_13", feature = "opentelemetry_0_14", feature = "opentelemetry_0_15"))]
$crate::root_span_macro::private::set_otel_parent(&$request, &span);
span
}
@ -124,22 +118,10 @@ pub mod private {
pub use tracing;
#[cfg(feature = "opentelemetry_0_13")]
#[cfg(any(feature = "opentelemetry_0_13", feature = "opentelemetry_0_14", feature = "opentelemetry_0_15"))]
#[doc(hidden)]
pub fn set_otel_parent_0_13(req: &ServiceRequest, span: &tracing::Span) {
crate::otel_0_13::set_otel_parent(req, span);
}
#[cfg(feature = "opentelemetry_0_14")]
#[doc(hidden)]
pub fn set_otel_parent_0_14(req: &ServiceRequest, span: &tracing::Span) {
crate::otel_0_14::set_otel_parent(req, span);
}
#[cfg(feature = "opentelemetry_0_15")]
#[doc(hidden)]
pub fn set_otel_parent_0_15(req: &ServiceRequest, span: &tracing::Span) {
crate::otel_0_15::set_otel_parent(req, span);
pub fn set_otel_parent(req: &ServiceRequest, span: &tracing::Span) {
crate::otel::set_otel_parent(req, span);
}
#[doc(hidden)]