Merge pull request #833 from urkle/feate-update-opentelemetry

update opentelemetry
This commit is contained in:
Sunli 2022-02-21 19:31:46 +08:00 committed by GitHub
commit a14c10624c
2 changed files with 13 additions and 4 deletions

View File

@ -61,7 +61,7 @@ log = { version = "0.4.14", optional = true }
secrecy = { version = "0.7.0", optional = true } secrecy = { version = "0.7.0", optional = true }
tracinglib = { version = "0.1.25", optional = true, package = "tracing" } tracinglib = { version = "0.1.25", optional = true, package = "tracing" }
tracing-futures = { version = "0.2.5", optional = true, features = ["std-future", "futures-03"] } tracing-futures = { version = "0.2.5", optional = true, features = ["std-future", "futures-03"] }
opentelemetry = { version = "0.16.0", optional = true, default-features = false, features = ["trace"] } opentelemetry = { version = "0.17.0", optional = true, default-features = false, features = ["trace"] }
uuid = { version = "0.8.2", optional = true, features = ["v4", "serde"] } uuid = { version = "0.8.2", optional = true, features = ["v4", "serde"] }
rust_decimal = { version = "1.14.3", optional = true } rust_decimal = { version = "1.14.3", optional = true }
url = { version = "2.2.1", optional = true } url = { version = "2.2.1", optional = true }

View File

@ -31,7 +31,8 @@ impl<T> OpenTelemetry<T> {
/// Use `tracer` to create an OpenTelemetry extension. /// Use `tracer` to create an OpenTelemetry extension.
pub fn new(tracer: T) -> OpenTelemetry<T> pub fn new(tracer: T) -> OpenTelemetry<T>
where where
T: Tracer + Send + Sync, T: Tracer + Send + Sync + 'static,
<T as Tracer>::Span: Sync + Send,
{ {
Self { Self {
tracer: Arc::new(tracer), tracer: Arc::new(tracer),
@ -39,7 +40,11 @@ impl<T> OpenTelemetry<T> {
} }
} }
impl<T: Tracer + Send + Sync> ExtensionFactory for OpenTelemetry<T> { impl<T> ExtensionFactory for OpenTelemetry<T>
where
T: Tracer + Send + Sync + 'static,
<T as Tracer>::Span: Sync + Send,
{
fn create(&self) -> Arc<dyn Extension> { fn create(&self) -> Arc<dyn Extension> {
Arc::new(OpenTelemetryExtension { Arc::new(OpenTelemetryExtension {
tracer: self.tracer.clone(), tracer: self.tracer.clone(),
@ -52,7 +57,11 @@ struct OpenTelemetryExtension<T> {
} }
#[async_trait::async_trait] #[async_trait::async_trait]
impl<T: Tracer + Send + Sync> Extension for OpenTelemetryExtension<T> { impl<T> Extension for OpenTelemetryExtension<T>
where
T: Tracer + Send + Sync + 'static,
<T as Tracer>::Span: Sync + Send,
{
async fn request(&self, ctx: &ExtensionContext<'_>, next: NextRequest<'_>) -> Response { async fn request(&self, ctx: &ExtensionContext<'_>, next: NextRequest<'_>) -> Response {
next.run(ctx) next.run(ctx)
.with_context(OpenTelemetryContext::current_with_span( .with_context(OpenTelemetryContext::current_with_span(