chore(tvix/tracing): bump to opentelemetry 0.28
According to https://github.com/open-telemetry/opentelemetry-rust/issues/1395#issuecomment-2612865575, we can now remove the spawn_blocking calls and channel logic for flushing / shutdown. Change-Id: I0fabc1fe0968a736e7d44dfde41f4a6adac5e272 Reviewed-on: https://cl.tvl.fyi/c/depot/+/13154 Tested-by: BuildkiteCI Reviewed-by: edef <edef@edef.eu>
This commit is contained in:
parent
9d5a556533
commit
661fe698a1
10 changed files with 235 additions and 245 deletions
54
tvix/Cargo.lock
generated
54
tvix/Cargo.lock
generated
|
|
@ -2826,44 +2826,48 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
|
|||
|
||||
[[package]]
|
||||
name = "opentelemetry"
|
||||
version = "0.27.1"
|
||||
version = "0.28.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ab70038c28ed37b97d8ed414b6429d343a8bbf44c9f79ec854f3a643029ba6d7"
|
||||
checksum = "236e667b670a5cdf90c258f5a55794ec5ac5027e960c224bff8367a59e1e6426"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"futures-sink",
|
||||
"js-sys",
|
||||
"pin-project-lite",
|
||||
"thiserror 1.0.69",
|
||||
"thiserror 2.0.9",
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "opentelemetry-http"
|
||||
version = "0.27.0"
|
||||
version = "0.28.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "10a8a7f5f6ba7c1b286c2fbca0454eaba116f63bbe69ed250b642d36fbb04d80"
|
||||
checksum = "a8863faf2910030d139fb48715ad5ff2f35029fc5f244f6d5f689ddcf4d26253"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"bytes",
|
||||
"http 1.2.0",
|
||||
"opentelemetry",
|
||||
"reqwest",
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "opentelemetry-otlp"
|
||||
version = "0.27.0"
|
||||
version = "0.28.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "91cf61a1868dacc576bf2b2a1c3e9ab150af7272909e80085c3173384fe11f76"
|
||||
checksum = "5bef114c6d41bea83d6dc60eb41720eedd0261a67af57b66dd2b84ac46c01d91"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"futures-core",
|
||||
"http 1.2.0",
|
||||
"opentelemetry",
|
||||
"opentelemetry-http",
|
||||
"opentelemetry-proto",
|
||||
"opentelemetry_sdk",
|
||||
"prost",
|
||||
"thiserror 1.0.69",
|
||||
"reqwest",
|
||||
"thiserror 2.0.9",
|
||||
"tokio",
|
||||
"tonic",
|
||||
"tracing",
|
||||
|
|
@ -2871,9 +2875,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "opentelemetry-proto"
|
||||
version = "0.27.0"
|
||||
version = "0.28.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a6e05acbfada5ec79023c85368af14abd0b307c015e9064d249b2a950ef459a6"
|
||||
checksum = "56f8870d3024727e99212eb3bb1762ec16e255e3e6f58eeb3dc8db1aa226746d"
|
||||
dependencies = [
|
||||
"opentelemetry",
|
||||
"opentelemetry_sdk",
|
||||
|
|
@ -2883,15 +2887,15 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "opentelemetry-semantic-conventions"
|
||||
version = "0.27.0"
|
||||
version = "0.28.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bc1b6902ff63b32ef6c489e8048c5e253e2e4a803ea3ea7e783914536eb15c52"
|
||||
checksum = "2fb3a2f78c2d55362cd6c313b8abedfbc0142ab3c2676822068fd2ab7d51f9b7"
|
||||
|
||||
[[package]]
|
||||
name = "opentelemetry_sdk"
|
||||
version = "0.27.1"
|
||||
version = "0.28.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "231e9d6ceef9b0b2546ddf52335785ce41252bc7474ee8ba05bfad277be13ab8"
|
||||
checksum = "84dfad6042089c7fc1f6118b7040dc2eb4ab520abbf410b79dc481032af39570"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"futures-channel",
|
||||
|
|
@ -2902,7 +2906,7 @@ dependencies = [
|
|||
"percent-encoding",
|
||||
"rand",
|
||||
"serde_json",
|
||||
"thiserror 1.0.69",
|
||||
"thiserror 2.0.9",
|
||||
"tokio",
|
||||
"tokio-stream",
|
||||
"tracing",
|
||||
|
|
@ -3557,6 +3561,7 @@ checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da"
|
|||
dependencies = [
|
||||
"base64 0.22.1",
|
||||
"bytes",
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
"futures-util",
|
||||
"h2",
|
||||
|
|
@ -3598,8 +3603,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "reqwest-middleware"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d1ccd3b55e711f91a9885a2fa6fbbb2e39db1776420b062efc058c6410f7e5e3"
|
||||
source = "git+https://github.com/TrueLayer/reqwest-middleware?rev=9fdba406c124c567e2302f1aec63483ed7db63b1#9fdba406c124c567e2302f1aec63483ed7db63b1"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
|
|
@ -3613,8 +3617,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "reqwest-tracing"
|
||||
version = "0.5.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "73e6153390585f6961341b50e5a1931d6be6dee4292283635903c26ef9d980d2"
|
||||
source = "git+https://github.com/TrueLayer/reqwest-middleware?rev=9fdba406c124c567e2302f1aec63483ed7db63b1#9fdba406c124c567e2302f1aec63483ed7db63b1"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
|
|
@ -4767,9 +4770,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "tower-http"
|
||||
version = "0.5.2"
|
||||
version = "0.6.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5"
|
||||
checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697"
|
||||
dependencies = [
|
||||
"async-compression",
|
||||
"bitflags 2.6.0",
|
||||
|
|
@ -4777,7 +4780,6 @@ dependencies = [
|
|||
"futures-core",
|
||||
"http 1.2.0",
|
||||
"http-body",
|
||||
"http-body-util",
|
||||
"pin-project-lite",
|
||||
"tokio",
|
||||
"tokio-util",
|
||||
|
|
@ -4794,9 +4796,9 @@ checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
|
|||
|
||||
[[package]]
|
||||
name = "tower-otel-http-metrics"
|
||||
version = "0.10.0"
|
||||
version = "0.11.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ed0ba983713ec0f5d512dc28091fa3c1cb8fa5487de32a1b0bc0cb4159f9f89f"
|
||||
checksum = "dfb893a8ddabbf5cdab3c90e31c8399e638036a4a005b0ea03b3b319c2440c59"
|
||||
dependencies = [
|
||||
"axum",
|
||||
"futures-util",
|
||||
|
|
@ -4882,9 +4884,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "tracing-opentelemetry"
|
||||
version = "0.28.0"
|
||||
version = "0.29.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "97a971f6058498b5c0f1affa23e7ea202057a7301dbff68e968b2d578bcbd053"
|
||||
checksum = "721f2d2569dce9f3dfbbddee5906941e953bfcdf736a62da3377f5751650cc36"
|
||||
dependencies = [
|
||||
"js-sys",
|
||||
"once_cell",
|
||||
|
|
|
|||
177
tvix/Cargo.nix
177
tvix/Cargo.nix
|
|
@ -9032,9 +9032,9 @@ rec {
|
|||
};
|
||||
"opentelemetry" = rec {
|
||||
crateName = "opentelemetry";
|
||||
version = "0.27.1";
|
||||
version = "0.28.0";
|
||||
edition = "2021";
|
||||
sha256 = "1mx6kc1479pkak49xxy98jzqnfilkm1bc56liryvjdzd52606w5b";
|
||||
sha256 = "09k43sgaarw3zx5j434ngq1canpcjibsbxaqqa8dyp0acxxncvi3";
|
||||
dependencies = [
|
||||
{
|
||||
name = "futures-core";
|
||||
|
|
@ -9058,7 +9058,7 @@ rec {
|
|||
}
|
||||
{
|
||||
name = "thiserror";
|
||||
packageId = "thiserror 1.0.69";
|
||||
packageId = "thiserror 2.0.9";
|
||||
optional = true;
|
||||
usesDefaultFeatures = false;
|
||||
}
|
||||
|
|
@ -9076,7 +9076,7 @@ rec {
|
|||
"internal-logs" = [ "tracing" ];
|
||||
"pin-project-lite" = [ "dep:pin-project-lite" ];
|
||||
"spec_unstable_logs_enabled" = [ "logs" ];
|
||||
"testing" = [ "trace" "metrics" ];
|
||||
"testing" = [ "trace" ];
|
||||
"thiserror" = [ "dep:thiserror" ];
|
||||
"trace" = [ "pin-project-lite" "futures-sink" "futures-core" "thiserror" ];
|
||||
"tracing" = [ "dep:tracing" ];
|
||||
|
|
@ -9085,9 +9085,9 @@ rec {
|
|||
};
|
||||
"opentelemetry-http" = rec {
|
||||
crateName = "opentelemetry-http";
|
||||
version = "0.27.0";
|
||||
version = "0.28.0";
|
||||
edition = "2021";
|
||||
sha256 = "102dn3xkcbb41cjyssdy7gv1d8db9r2s1g1gdhl1nz5syvssga0h";
|
||||
sha256 = "0lv2sbsdr7b8bxnly92zzhlm1wzjbynib1xlkw9hs0qh56pkz1m8";
|
||||
libName = "opentelemetry_http";
|
||||
dependencies = [
|
||||
{
|
||||
|
|
@ -9109,19 +9109,36 @@ rec {
|
|||
packageId = "opentelemetry";
|
||||
features = [ "trace" ];
|
||||
}
|
||||
{
|
||||
name = "reqwest";
|
||||
packageId = "reqwest";
|
||||
optional = true;
|
||||
usesDefaultFeatures = false;
|
||||
features = [ "blocking" ];
|
||||
}
|
||||
{
|
||||
name = "tracing";
|
||||
packageId = "tracing";
|
||||
optional = true;
|
||||
usesDefaultFeatures = false;
|
||||
}
|
||||
];
|
||||
features = {
|
||||
"default" = [ "internal-logs" ];
|
||||
"hyper" = [ "dep:http-body-util" "dep:hyper" "dep:hyper-util" "dep:tokio" ];
|
||||
"internal-logs" = [ "tracing" "opentelemetry/internal-logs" ];
|
||||
"reqwest" = [ "dep:reqwest" ];
|
||||
"reqwest-rustls" = [ "reqwest" "reqwest/rustls-tls-native-roots" ];
|
||||
"reqwest-rustls-webpki-roots" = [ "reqwest" "reqwest/rustls-tls-webpki-roots" ];
|
||||
"tracing" = [ "dep:tracing" ];
|
||||
};
|
||||
resolvedDefaultFeatures = [ "default" "internal-logs" "reqwest" "tracing" ];
|
||||
};
|
||||
"opentelemetry-otlp" = rec {
|
||||
crateName = "opentelemetry-otlp";
|
||||
version = "0.27.0";
|
||||
version = "0.28.0";
|
||||
edition = "2021";
|
||||
sha256 = "0xhzw57khwribh4817lhf9rayl5ik8z1qaibpxvcbb4dhshn3kwi";
|
||||
sha256 = "148xq13ar11bvmk7pxbslrhh5pgf40bv83n6dlysigj1dm613vsv";
|
||||
libName = "opentelemetry_otlp";
|
||||
dependencies = [
|
||||
{
|
||||
|
|
@ -9144,6 +9161,11 @@ rec {
|
|||
packageId = "opentelemetry";
|
||||
usesDefaultFeatures = false;
|
||||
}
|
||||
{
|
||||
name = "opentelemetry-http";
|
||||
packageId = "opentelemetry-http";
|
||||
optional = true;
|
||||
}
|
||||
{
|
||||
name = "opentelemetry-proto";
|
||||
packageId = "opentelemetry-proto";
|
||||
|
|
@ -9159,9 +9181,15 @@ rec {
|
|||
packageId = "prost";
|
||||
optional = true;
|
||||
}
|
||||
{
|
||||
name = "reqwest";
|
||||
packageId = "reqwest";
|
||||
optional = true;
|
||||
usesDefaultFeatures = false;
|
||||
}
|
||||
{
|
||||
name = "thiserror";
|
||||
packageId = "thiserror 1.0.69";
|
||||
packageId = "thiserror 2.0.9";
|
||||
usesDefaultFeatures = false;
|
||||
}
|
||||
{
|
||||
|
|
@ -9193,19 +9221,18 @@ rec {
|
|||
}
|
||||
];
|
||||
features = {
|
||||
"default" = [ "grpc-tonic" "trace" "metrics" "logs" "internal-logs" ];
|
||||
"default" = [ "http-proto" "reqwest-blocking-client" "trace" "metrics" "logs" "internal-logs" ];
|
||||
"grpc-tonic" = [ "tonic" "prost" "http" "tokio" "opentelemetry-proto/gen-tonic" ];
|
||||
"gzip-tonic" = [ "tonic/gzip" ];
|
||||
"http" = [ "dep:http" ];
|
||||
"http-json" = [ "serde_json" "prost" "opentelemetry-http" "opentelemetry-proto/gen-tonic-messages" "opentelemetry-proto/with-serde" "http" "trace" "metrics" ];
|
||||
"http-proto" = [ "prost" "opentelemetry-http" "opentelemetry-proto/gen-tonic-messages" "http" "trace" "metrics" ];
|
||||
"hyper-client" = [ "opentelemetry-http/hyper" ];
|
||||
"integration-testing" = [ "tonic" "prost" "tokio/full" "trace" ];
|
||||
"internal-logs" = [ "tracing" ];
|
||||
"integration-testing" = [ "tonic" "prost" "tokio/full" "trace" "logs" ];
|
||||
"internal-logs" = [ "tracing" "opentelemetry/internal-logs" ];
|
||||
"logs" = [ "opentelemetry/logs" "opentelemetry_sdk/logs" "opentelemetry-proto/logs" ];
|
||||
"metrics" = [ "opentelemetry/metrics" "opentelemetry_sdk/metrics" "opentelemetry-proto/metrics" ];
|
||||
"opentelemetry-http" = [ "dep:opentelemetry-http" ];
|
||||
"populate-logs-event-name" = [ "opentelemetry-proto/populate-logs-event-name" ];
|
||||
"prost" = [ "dep:prost" ];
|
||||
"reqwest" = [ "dep:reqwest" ];
|
||||
"reqwest-blocking-client" = [ "reqwest/blocking" "opentelemetry-http/reqwest" ];
|
||||
|
|
@ -9224,13 +9251,13 @@ rec {
|
|||
"tracing" = [ "dep:tracing" ];
|
||||
"zstd-tonic" = [ "tonic/zstd" ];
|
||||
};
|
||||
resolvedDefaultFeatures = [ "default" "grpc-tonic" "http" "internal-logs" "logs" "metrics" "prost" "tokio" "tonic" "trace" "tracing" ];
|
||||
resolvedDefaultFeatures = [ "default" "grpc-tonic" "http" "http-proto" "internal-logs" "logs" "metrics" "opentelemetry-http" "prost" "reqwest" "reqwest-blocking-client" "tokio" "tonic" "trace" "tracing" ];
|
||||
};
|
||||
"opentelemetry-proto" = rec {
|
||||
crateName = "opentelemetry-proto";
|
||||
version = "0.27.0";
|
||||
version = "0.28.0";
|
||||
edition = "2021";
|
||||
sha256 = "19jryh79aalv4i6hds8mq03v7l5b2jpnhly84f8cfpnszb5mmq56";
|
||||
sha256 = "0vbl4si1mny87pmqxxg6wday45pcc8bvpcrf46cpwwi4606qgy2n";
|
||||
libName = "opentelemetry_proto";
|
||||
dependencies = [
|
||||
{
|
||||
|
|
@ -9257,11 +9284,13 @@ rec {
|
|||
}
|
||||
];
|
||||
features = {
|
||||
"base64" = [ "dep:base64" ];
|
||||
"default" = [ "full" ];
|
||||
"full" = [ "gen-tonic" "trace" "logs" "metrics" "zpages" "with-serde" ];
|
||||
"full" = [ "gen-tonic" "trace" "logs" "metrics" "zpages" "with-serde" "internal-logs" ];
|
||||
"gen-tonic" = [ "gen-tonic-messages" "tonic/transport" ];
|
||||
"gen-tonic-messages" = [ "tonic" "prost" ];
|
||||
"hex" = [ "dep:hex" ];
|
||||
"internal-logs" = [ "tracing" ];
|
||||
"logs" = [ "opentelemetry/logs" "opentelemetry_sdk/logs" ];
|
||||
"metrics" = [ "opentelemetry/metrics" "opentelemetry_sdk/metrics" ];
|
||||
"prost" = [ "dep:prost" ];
|
||||
|
|
@ -9270,26 +9299,27 @@ rec {
|
|||
"testing" = [ "opentelemetry/testing" ];
|
||||
"tonic" = [ "dep:tonic" ];
|
||||
"trace" = [ "opentelemetry/trace" "opentelemetry_sdk/trace" ];
|
||||
"tracing" = [ "dep:tracing" ];
|
||||
"with-schemars" = [ "schemars" ];
|
||||
"with-serde" = [ "serde" "hex" ];
|
||||
"with-serde" = [ "serde" "hex" "base64" ];
|
||||
"zpages" = [ "trace" ];
|
||||
};
|
||||
resolvedDefaultFeatures = [ "gen-tonic" "gen-tonic-messages" "logs" "metrics" "prost" "tonic" "trace" ];
|
||||
};
|
||||
"opentelemetry-semantic-conventions" = rec {
|
||||
crateName = "opentelemetry-semantic-conventions";
|
||||
version = "0.27.0";
|
||||
version = "0.28.0";
|
||||
edition = "2021";
|
||||
sha256 = "0ljwn5p5651rg1zfm8ryh152wgi5bs609s49qkv2xcv3zw16j6xw";
|
||||
sha256 = "1dzra5yspllg0qi6hry2ncm19h7vxnmvh4y3sqn3cm9dikvs5crg";
|
||||
libName = "opentelemetry_semantic_conventions";
|
||||
features = { };
|
||||
resolvedDefaultFeatures = [ "default" ];
|
||||
};
|
||||
"opentelemetry_sdk" = rec {
|
||||
crateName = "opentelemetry_sdk";
|
||||
version = "0.27.1";
|
||||
version = "0.28.0";
|
||||
edition = "2021";
|
||||
sha256 = "1f1sw5xjgbdz0nxfhkj7qwmjahffhmbk6lnzdmab5c7rxrn9s7i3";
|
||||
sha256 = "0w4mycm070f4knvi1x5v199apd1fvi0712qiyv0pz70889havpw4";
|
||||
dependencies = [
|
||||
{
|
||||
name = "async-trait";
|
||||
|
|
@ -9338,7 +9368,7 @@ rec {
|
|||
}
|
||||
{
|
||||
name = "thiserror";
|
||||
packageId = "thiserror 1.0.69";
|
||||
packageId = "thiserror 2.0.9";
|
||||
usesDefaultFeatures = false;
|
||||
}
|
||||
{
|
||||
|
|
@ -9364,19 +9394,22 @@ rec {
|
|||
"async-std" = [ "dep:async-std" ];
|
||||
"async-trait" = [ "dep:async-trait" ];
|
||||
"default" = [ "trace" "metrics" "logs" "internal-logs" ];
|
||||
"experimental_metrics_periodic_reader_no_runtime" = [ "metrics" ];
|
||||
"experimental_logs_batch_log_processor_with_async_runtime" = [ "logs" ];
|
||||
"experimental_metrics_disable_name_validation" = [ "metrics" ];
|
||||
"experimental_metrics_periodicreader_with_async_runtime" = [ "metrics" ];
|
||||
"experimental_trace_batch_span_processor_with_async_runtime" = [ "trace" ];
|
||||
"glob" = [ "dep:glob" ];
|
||||
"http" = [ "dep:http" ];
|
||||
"internal-logs" = [ "tracing" ];
|
||||
"jaeger_remote_sampler" = [ "trace" "opentelemetry-http" "http" "serde" "serde_json" "url" ];
|
||||
"logs" = [ "opentelemetry/logs" "async-trait" "serde_json" ];
|
||||
"logs" = [ "opentelemetry/logs" "serde_json" ];
|
||||
"metrics" = [ "opentelemetry/metrics" "glob" "async-trait" ];
|
||||
"opentelemetry-http" = [ "dep:opentelemetry-http" ];
|
||||
"percent-encoding" = [ "dep:percent-encoding" ];
|
||||
"rand" = [ "dep:rand" ];
|
||||
"rt-async-std" = [ "async-std" ];
|
||||
"rt-tokio" = [ "tokio" "tokio-stream" ];
|
||||
"rt-tokio-current-thread" = [ "tokio" "tokio-stream" ];
|
||||
"rt-async-std" = [ "async-std" "experimental_async_runtime" ];
|
||||
"rt-tokio" = [ "tokio" "tokio-stream" "experimental_async_runtime" ];
|
||||
"rt-tokio-current-thread" = [ "tokio" "tokio-stream" "experimental_async_runtime" ];
|
||||
"serde" = [ "dep:serde" ];
|
||||
"serde_json" = [ "dep:serde_json" ];
|
||||
"spec_unstable_logs_enabled" = [ "logs" "opentelemetry/spec_unstable_logs_enabled" ];
|
||||
|
|
@ -9388,7 +9421,7 @@ rec {
|
|||
"tracing" = [ "dep:tracing" ];
|
||||
"url" = [ "dep:url" ];
|
||||
};
|
||||
resolvedDefaultFeatures = [ "async-trait" "default" "glob" "internal-logs" "logs" "metrics" "percent-encoding" "rand" "rt-tokio" "serde_json" "tokio" "tokio-stream" "trace" "tracing" ];
|
||||
resolvedDefaultFeatures = [ "async-trait" "default" "experimental_async_runtime" "glob" "internal-logs" "logs" "metrics" "percent-encoding" "rand" "rt-tokio" "serde_json" "tokio" "tokio-stream" "trace" "tracing" ];
|
||||
};
|
||||
"os_str_bytes" = rec {
|
||||
crateName = "os_str_bytes";
|
||||
|
|
@ -11353,6 +11386,12 @@ rec {
|
|||
name = "bytes";
|
||||
packageId = "bytes";
|
||||
}
|
||||
{
|
||||
name = "futures-channel";
|
||||
packageId = "futures-channel";
|
||||
optional = true;
|
||||
target = { target, features }: (!("wasm32" == target."arch" or null));
|
||||
}
|
||||
{
|
||||
name = "futures-core";
|
||||
packageId = "futures-core";
|
||||
|
|
@ -11650,13 +11689,18 @@ rec {
|
|||
"stream" = [ "tokio/fs" "dep:tokio-util" "dep:wasm-streams" ];
|
||||
"zstd" = [ "dep:async-compression" "async-compression?/zstd" "dep:tokio-util" ];
|
||||
};
|
||||
resolvedDefaultFeatures = [ "__rustls" "__rustls-ring" "__tls" "h2" "http2" "json" "rustls-tls-native-roots" "rustls-tls-native-roots-no-provider" "stream" ];
|
||||
resolvedDefaultFeatures = [ "__rustls" "__rustls-ring" "__tls" "blocking" "h2" "http2" "json" "rustls-tls-native-roots" "rustls-tls-native-roots-no-provider" "stream" ];
|
||||
};
|
||||
"reqwest-middleware" = rec {
|
||||
crateName = "reqwest-middleware";
|
||||
version = "0.4.0";
|
||||
edition = "2018";
|
||||
sha256 = "1qz5yw869305zhp0c2s2fqbxnf9fpgxscbssi2lr27vibssx7k6i";
|
||||
workspace_member = null;
|
||||
src = pkgs.fetchgit {
|
||||
url = "https://github.com/TrueLayer/reqwest-middleware";
|
||||
rev = "9fdba406c124c567e2302f1aec63483ed7db63b1";
|
||||
sha256 = "0jn14w0pbixscp4vgcanpi36d7b9k5c2hvksa00l5xgsmkmxni7l";
|
||||
};
|
||||
libName = "reqwest_middleware";
|
||||
authors = [
|
||||
"Rodrigo Gryzinski <rodrigo.gryzinski@truelayer.com>"
|
||||
|
|
@ -11711,7 +11755,12 @@ rec {
|
|||
crateName = "reqwest-tracing";
|
||||
version = "0.5.5";
|
||||
edition = "2018";
|
||||
sha256 = "1ll0v7wnxhh3b5iq68i9wkgfcsqxjfhyal0v6ihnjpsqj0ribrkk";
|
||||
workspace_member = null;
|
||||
src = pkgs.fetchgit {
|
||||
url = "https://github.com/TrueLayer/reqwest-middleware";
|
||||
rev = "9fdba406c124c567e2302f1aec63483ed7db63b1";
|
||||
sha256 = "0jn14w0pbixscp4vgcanpi36d7b9k5c2hvksa00l5xgsmkmxni7l";
|
||||
};
|
||||
libName = "reqwest_tracing";
|
||||
authors = [
|
||||
"Rodrigo Gryzinski <rodrigo.gryzinski@truelayer.com>"
|
||||
|
|
@ -11742,7 +11791,7 @@ rec {
|
|||
{
|
||||
name = "opentelemetry";
|
||||
packageId = "opentelemetry";
|
||||
rename = "opentelemetry_0_27_pkg";
|
||||
rename = "opentelemetry_0_28_pkg";
|
||||
optional = true;
|
||||
}
|
||||
{
|
||||
|
|
@ -11761,7 +11810,7 @@ rec {
|
|||
{
|
||||
name = "tracing-opentelemetry";
|
||||
packageId = "tracing-opentelemetry";
|
||||
rename = "tracing-opentelemetry_0_28_pkg";
|
||||
rename = "tracing-opentelemetry_0_29_pkg";
|
||||
optional = true;
|
||||
}
|
||||
];
|
||||
|
|
@ -11789,6 +11838,8 @@ rec {
|
|||
"opentelemetry_0_26_pkg" = [ "dep:opentelemetry_0_26_pkg" ];
|
||||
"opentelemetry_0_27" = [ "opentelemetry_0_27_pkg" "tracing-opentelemetry_0_28_pkg" ];
|
||||
"opentelemetry_0_27_pkg" = [ "dep:opentelemetry_0_27_pkg" ];
|
||||
"opentelemetry_0_28" = [ "opentelemetry_0_28_pkg" "tracing-opentelemetry_0_29_pkg" ];
|
||||
"opentelemetry_0_28_pkg" = [ "dep:opentelemetry_0_28_pkg" ];
|
||||
"tracing-opentelemetry_0_21_pkg" = [ "dep:tracing-opentelemetry_0_21_pkg" ];
|
||||
"tracing-opentelemetry_0_22_pkg" = [ "dep:tracing-opentelemetry_0_22_pkg" ];
|
||||
"tracing-opentelemetry_0_23_pkg" = [ "dep:tracing-opentelemetry_0_23_pkg" ];
|
||||
|
|
@ -11797,8 +11848,9 @@ rec {
|
|||
"tracing-opentelemetry_0_26_pkg" = [ "dep:tracing-opentelemetry_0_26_pkg" ];
|
||||
"tracing-opentelemetry_0_27_pkg" = [ "dep:tracing-opentelemetry_0_27_pkg" ];
|
||||
"tracing-opentelemetry_0_28_pkg" = [ "dep:tracing-opentelemetry_0_28_pkg" ];
|
||||
"tracing-opentelemetry_0_29_pkg" = [ "dep:tracing-opentelemetry_0_29_pkg" ];
|
||||
};
|
||||
resolvedDefaultFeatures = [ "opentelemetry_0_27" "opentelemetry_0_27_pkg" "tracing-opentelemetry_0_28_pkg" ];
|
||||
resolvedDefaultFeatures = [ "opentelemetry_0_28" "opentelemetry_0_28_pkg" "tracing-opentelemetry_0_29_pkg" ];
|
||||
};
|
||||
"reserve-port" = rec {
|
||||
crateName = "reserve-port";
|
||||
|
|
@ -15544,9 +15596,9 @@ rec {
|
|||
};
|
||||
"tower-http" = rec {
|
||||
crateName = "tower-http";
|
||||
version = "0.5.2";
|
||||
version = "0.6.2";
|
||||
edition = "2018";
|
||||
sha256 = "1xakj3x0anp55gjqibiwvzma5iz0w9pcjsr7qk97sx4qm4sd970y";
|
||||
sha256 = "15wnvhl6cpir9125s73bqjzjsvfb0fmndmsimnl2ddnlhfvs6gs0";
|
||||
libName = "tower_http";
|
||||
authors = [
|
||||
"Tower Maintainers <team@tower-rs.com>"
|
||||
|
|
@ -15579,10 +15631,7 @@ rec {
|
|||
{
|
||||
name = "http-body";
|
||||
packageId = "http-body";
|
||||
}
|
||||
{
|
||||
name = "http-body-util";
|
||||
packageId = "http-body-util";
|
||||
optional = true;
|
||||
}
|
||||
{
|
||||
name = "pin-project-lite";
|
||||
|
|
@ -15621,6 +15670,10 @@ rec {
|
|||
name = "bytes";
|
||||
packageId = "bytes";
|
||||
}
|
||||
{
|
||||
name = "http-body";
|
||||
packageId = "http-body";
|
||||
}
|
||||
{
|
||||
name = "tokio";
|
||||
packageId = "tokio";
|
||||
|
|
@ -15631,34 +15684,35 @@ rec {
|
|||
"async-compression" = [ "dep:async-compression" ];
|
||||
"auth" = [ "base64" "validate-request" ];
|
||||
"base64" = [ "dep:base64" ];
|
||||
"catch-panic" = [ "tracing" "futures-util/std" ];
|
||||
"compression-br" = [ "async-compression/brotli" "futures-core" "tokio-util" "tokio" ];
|
||||
"compression-deflate" = [ "async-compression/zlib" "futures-core" "tokio-util" "tokio" ];
|
||||
"catch-panic" = [ "tracing" "futures-util/std" "dep:http-body" "dep:http-body-util" ];
|
||||
"compression-br" = [ "async-compression/brotli" "futures-core" "dep:http-body" "tokio-util" "tokio" ];
|
||||
"compression-deflate" = [ "async-compression/zlib" "futures-core" "dep:http-body" "tokio-util" "tokio" ];
|
||||
"compression-full" = [ "compression-br" "compression-deflate" "compression-gzip" "compression-zstd" ];
|
||||
"compression-gzip" = [ "async-compression/gzip" "futures-core" "tokio-util" "tokio" ];
|
||||
"compression-zstd" = [ "async-compression/zstd" "futures-core" "tokio-util" "tokio" ];
|
||||
"decompression-br" = [ "async-compression/brotli" "futures-core" "tokio-util" "tokio" ];
|
||||
"decompression-deflate" = [ "async-compression/zlib" "futures-core" "tokio-util" "tokio" ];
|
||||
"compression-gzip" = [ "async-compression/gzip" "futures-core" "dep:http-body" "tokio-util" "tokio" ];
|
||||
"compression-zstd" = [ "async-compression/zstd" "futures-core" "dep:http-body" "tokio-util" "tokio" ];
|
||||
"decompression-br" = [ "async-compression/brotli" "futures-core" "dep:http-body" "dep:http-body-util" "tokio-util" "tokio" ];
|
||||
"decompression-deflate" = [ "async-compression/zlib" "futures-core" "dep:http-body" "dep:http-body-util" "tokio-util" "tokio" ];
|
||||
"decompression-full" = [ "decompression-br" "decompression-deflate" "decompression-gzip" "decompression-zstd" ];
|
||||
"decompression-gzip" = [ "async-compression/gzip" "futures-core" "tokio-util" "tokio" ];
|
||||
"decompression-zstd" = [ "async-compression/zstd" "futures-core" "tokio-util" "tokio" ];
|
||||
"follow-redirect" = [ "futures-util" "iri-string" "tower/util" ];
|
||||
"fs" = [ "futures-util" "tokio/fs" "tokio-util/io" "tokio/io-util" "dep:http-range-header" "mime_guess" "mime" "percent-encoding" "httpdate" "set-status" "futures-util/alloc" "tracing" ];
|
||||
"decompression-gzip" = [ "async-compression/gzip" "futures-core" "dep:http-body" "dep:http-body-util" "tokio-util" "tokio" ];
|
||||
"decompression-zstd" = [ "async-compression/zstd" "futures-core" "dep:http-body" "dep:http-body-util" "tokio-util" "tokio" ];
|
||||
"follow-redirect" = [ "futures-util" "dep:http-body" "iri-string" "tower/util" ];
|
||||
"fs" = [ "futures-util" "dep:http-body" "dep:http-body-util" "tokio/fs" "tokio-util/io" "tokio/io-util" "dep:http-range-header" "mime_guess" "mime" "percent-encoding" "httpdate" "set-status" "futures-util/alloc" "tracing" ];
|
||||
"full" = [ "add-extension" "auth" "catch-panic" "compression-full" "cors" "decompression-full" "follow-redirect" "fs" "limit" "map-request-body" "map-response-body" "metrics" "normalize-path" "propagate-header" "redirect" "request-id" "sensitive-headers" "set-header" "set-status" "timeout" "trace" "util" "validate-request" ];
|
||||
"futures-core" = [ "dep:futures-core" ];
|
||||
"futures-util" = [ "dep:futures-util" ];
|
||||
"httpdate" = [ "dep:httpdate" ];
|
||||
"iri-string" = [ "dep:iri-string" ];
|
||||
"metrics" = [ "tokio/time" ];
|
||||
"limit" = [ "dep:http-body" "dep:http-body-util" ];
|
||||
"metrics" = [ "dep:http-body" "tokio/time" ];
|
||||
"mime" = [ "dep:mime" ];
|
||||
"mime_guess" = [ "dep:mime_guess" ];
|
||||
"percent-encoding" = [ "dep:percent-encoding" ];
|
||||
"request-id" = [ "uuid" ];
|
||||
"timeout" = [ "tokio/time" ];
|
||||
"timeout" = [ "dep:http-body" "tokio/time" ];
|
||||
"tokio" = [ "dep:tokio" ];
|
||||
"tokio-util" = [ "dep:tokio-util" ];
|
||||
"tower" = [ "dep:tower" ];
|
||||
"trace" = [ "tracing" ];
|
||||
"trace" = [ "dep:http-body" "tracing" ];
|
||||
"tracing" = [ "dep:tracing" ];
|
||||
"util" = [ "tower" ];
|
||||
"uuid" = [ "dep:uuid" ];
|
||||
|
|
@ -15679,9 +15733,9 @@ rec {
|
|||
};
|
||||
"tower-otel-http-metrics" = rec {
|
||||
crateName = "tower-otel-http-metrics";
|
||||
version = "0.10.0";
|
||||
version = "0.11.0";
|
||||
edition = "2021";
|
||||
sha256 = "17zqz5cl3jy01cdjmqvx92jqzjy1lcghja6w2bazbh1yf61sj2zd";
|
||||
sha256 = "0n8c8k11kcxk0gmb01d0lhv80qwy774323n9ngd5rgxbvnl97f6z";
|
||||
libName = "tower_otel_http_metrics";
|
||||
dependencies = [
|
||||
{
|
||||
|
|
@ -15951,9 +16005,9 @@ rec {
|
|||
};
|
||||
"tracing-opentelemetry" = rec {
|
||||
crateName = "tracing-opentelemetry";
|
||||
version = "0.28.0";
|
||||
version = "0.29.0";
|
||||
edition = "2021";
|
||||
sha256 = "0lyhrf5mfbcbjs7gdgqx62kmf810xbkj7ymgy70bb6440pv73acp";
|
||||
sha256 = "0dnca0b7bxbp6gd64skkvzy3p58yjh35kvnxpggz7sfwd4jjs7vj";
|
||||
libName = "tracing_opentelemetry";
|
||||
dependencies = [
|
||||
{
|
||||
|
|
@ -16041,9 +16095,9 @@ rec {
|
|||
"futures-util" = [ "dep:futures-util" ];
|
||||
"lazy_static" = [ "dep:lazy_static" ];
|
||||
"metrics" = [ "opentelemetry/metrics" "opentelemetry_sdk/metrics" "smallvec" ];
|
||||
"metrics_gauge_unstable" = [ "opentelemetry/otel_unstable" ];
|
||||
"smallvec" = [ "dep:smallvec" ];
|
||||
"thiserror" = [ "dep:thiserror" ];
|
||||
"thiserror-1" = [ "dep:thiserror-1" ];
|
||||
"tracing-log" = [ "dep:tracing-log" ];
|
||||
};
|
||||
resolvedDefaultFeatures = [ "default" "metrics" "smallvec" "tracing-log" ];
|
||||
|
|
@ -17619,6 +17673,7 @@ rec {
|
|||
name = "opentelemetry-otlp";
|
||||
packageId = "opentelemetry-otlp";
|
||||
optional = true;
|
||||
features = [ "grpc-tonic" ];
|
||||
}
|
||||
{
|
||||
name = "opentelemetry-semantic-conventions";
|
||||
|
|
@ -17679,7 +17734,7 @@ rec {
|
|||
];
|
||||
features = {
|
||||
"axum" = [ "dep:axum" ];
|
||||
"otlp" = [ "dep:tracing-opentelemetry" "dep:opentelemetry" "dep:opentelemetry-otlp" "dep:opentelemetry_sdk" "dep:opentelemetry-http" "dep:opentelemetry-semantic-conventions" "reqwest-tracing?/opentelemetry_0_27" ];
|
||||
"otlp" = [ "dep:tracing-opentelemetry" "dep:opentelemetry" "dep:opentelemetry-otlp" "dep:opentelemetry_sdk" "dep:opentelemetry-http" "dep:opentelemetry-semantic-conventions" "reqwest-tracing?/opentelemetry_0_28" ];
|
||||
"reqwest" = [ "dep:reqwest-tracing" ];
|
||||
"tonic" = [ "dep:tonic" "dep:http" ];
|
||||
"tracy" = [ "dep:tracing-tracy" ];
|
||||
|
|
|
|||
|
|
@ -88,11 +88,11 @@ nohash-hasher = "0.2.0"
|
|||
nom = "7.1.3"
|
||||
num-traits = "0.2.19"
|
||||
object_store = "0.10.2"
|
||||
opentelemetry = "0.27.0"
|
||||
opentelemetry-http = "0.27.0"
|
||||
opentelemetry-otlp = "0.27.0"
|
||||
opentelemetry-semantic-conventions = "0.27.0"
|
||||
opentelemetry_sdk = "0.27.0"
|
||||
opentelemetry = "0.28.0"
|
||||
opentelemetry-http = "0.28.0"
|
||||
opentelemetry-otlp = "0.28.0"
|
||||
opentelemetry-semantic-conventions = "0.28.0"
|
||||
opentelemetry_sdk = "0.28.0"
|
||||
os_str_bytes = "6.6"
|
||||
parking_lot = "0.12.3"
|
||||
path-clean = "0.1"
|
||||
|
|
@ -108,8 +108,9 @@ quote = "1.0.37"
|
|||
redb = "2.1.2"
|
||||
regex = "1.10.6"
|
||||
reqwest = { version = "0.12.7", default-features = false }
|
||||
reqwest-middleware = { version = "0.4.0", default-features = false }
|
||||
reqwest-tracing = { version = "0.5.5", default-features = false }
|
||||
# https://github.com/TrueLayer/reqwest-middleware/issues/220
|
||||
reqwest-middleware = { git = "https://github.com/TrueLayer/reqwest-middleware", rev = "9fdba406c124c567e2302f1aec63483ed7db63b1", default-features = false }
|
||||
reqwest-tracing = { git = "https://github.com/TrueLayer/reqwest-middleware", rev = "9fdba406c124c567e2302f1aec63483ed7db63b1", default-features = false }
|
||||
rnix = "0.11.0"
|
||||
rowan = "0.15" # keep in sync with rnix
|
||||
rstest = "0.19.0"
|
||||
|
|
@ -141,11 +142,11 @@ tonic-build = "0.12.2"
|
|||
tonic-health = { version = "0.12.2", default-features = false }
|
||||
tonic-reflection = "0.12.2"
|
||||
tower = "0.4.13"
|
||||
tower-http = "0.5.2"
|
||||
tower-otel-http-metrics = "0.10.0"
|
||||
tower-http = "0.6.2"
|
||||
tower-otel-http-metrics = "0.11.0"
|
||||
tracing = "0.1.40"
|
||||
tracing-indicatif = "0.3.6"
|
||||
tracing-opentelemetry = "0.28.0"
|
||||
tracing-opentelemetry = "0.29.0"
|
||||
tracing-subscriber = "0.3.18"
|
||||
tracing-test = "0.2.5"
|
||||
tracing-tracy = "0.11.2"
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
{
|
||||
"git+https://github.com/TrueLayer/reqwest-middleware?rev=9fdba406c124c567e2302f1aec63483ed7db63b1#0.4.0": "0jn14w0pbixscp4vgcanpi36d7b9k5c2hvksa00l5xgsmkmxni7l",
|
||||
"git+https://github.com/TrueLayer/reqwest-middleware?rev=9fdba406c124c567e2302f1aec63483ed7db63b1#reqwest-tracing@0.5.5": "0jn14w0pbixscp4vgcanpi36d7b9k5c2hvksa00l5xgsmkmxni7l",
|
||||
"git+https://github.com/tvlfyi/wu-manber.git#wu-manber@0.1.0": "1zhk83lbq99xzyjwphv2qrb8f8qgfqwa5bbbvyzm0z0bljsjv0pd"
|
||||
}
|
||||
|
|
@ -18,6 +18,8 @@ let
|
|||
(k:
|
||||
(lib.nameValuePair "${crates.internal.crates.${k}.crateName}-${crates.internal.crates.${k}.version}" crates.internal.crates.${k}.src.outputHash)
|
||||
) [
|
||||
"reqwest-middleware"
|
||||
"reqwest-tracing"
|
||||
"wu-manber"
|
||||
]);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
|
|||
tokio::select! {
|
||||
res = tokio::signal::ctrl_c() => {
|
||||
res?;
|
||||
if let Err(e) = tracing_handle.force_shutdown().await {
|
||||
if let Err(e) = tracing_handle.shutdown().await {
|
||||
eprintln!("failed to shutdown tracing: {e}");
|
||||
}
|
||||
Ok(())
|
||||
|
|
|
|||
|
|
@ -541,7 +541,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
|
|||
tokio::select! {
|
||||
res = tokio::signal::ctrl_c() => {
|
||||
res?;
|
||||
if let Err(e) = tracing_handle.force_shutdown().await {
|
||||
if let Err(e) = tracing_handle.shutdown().await {
|
||||
eprintln!("failed to shutdown tracing: {e}");
|
||||
}
|
||||
Ok(())
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ thiserror.workspace = true
|
|||
|
||||
tracing-opentelemetry = { workspace = true, optional = true }
|
||||
opentelemetry = { workspace = true, optional = true }
|
||||
opentelemetry-otlp = { workspace = true, optional = true }
|
||||
opentelemetry-otlp = { workspace = true, features = ["grpc-tonic"], optional = true }
|
||||
opentelemetry_sdk = { workspace = true, features = ["rt-tokio"], optional = true }
|
||||
tracing-tracy = { workspace = true, features = ["flush-on-exit"], optional = true }
|
||||
opentelemetry-http = { workspace = true, optional = true }
|
||||
|
|
@ -35,7 +35,7 @@ otlp = [
|
|||
"dep:opentelemetry_sdk",
|
||||
"dep:opentelemetry-http",
|
||||
"dep:opentelemetry-semantic-conventions",
|
||||
"reqwest-tracing?/opentelemetry_0_27",
|
||||
"reqwest-tracing?/opentelemetry_0_28",
|
||||
]
|
||||
tracy = [
|
||||
"dep:tracing-tracy"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
use indicatif::ProgressStyle;
|
||||
use std::sync::LazyLock;
|
||||
use tokio::sync::{mpsc, oneshot};
|
||||
use tracing::level_filters::LevelFilter;
|
||||
use tracing_indicatif::{
|
||||
filter::IndicatifFilter, util::FilteredFormatFields, writer, IndicatifLayer, IndicatifWriter,
|
||||
|
|
@ -11,13 +10,9 @@ use tracing_subscriber::{
|
|||
EnvFilter, Layer, Registry,
|
||||
};
|
||||
|
||||
#[cfg(feature = "otlp")]
|
||||
use opentelemetry::{trace::Tracer, KeyValue};
|
||||
#[cfg(feature = "otlp")]
|
||||
use opentelemetry_sdk::{
|
||||
propagation::TraceContextPropagator,
|
||||
resource::{ResourceDetector, SdkProvidedResourceDetector},
|
||||
Resource,
|
||||
propagation::TraceContextPropagator, resource::SdkProvidedResourceDetector, Resource,
|
||||
};
|
||||
#[cfg(feature = "tracy")]
|
||||
use tracing_tracy::TracyLayer;
|
||||
|
|
@ -48,22 +43,21 @@ pub enum Error {
|
|||
#[error(transparent)]
|
||||
Init(#[from] tracing_subscriber::util::TryInitError),
|
||||
|
||||
#[cfg(feature = "otlp")]
|
||||
#[error(transparent)]
|
||||
MpscSend(#[from] mpsc::error::SendError<oneshot::Sender<()>>),
|
||||
|
||||
#[error(transparent)]
|
||||
OneshotRecv(#[from] oneshot::error::RecvError),
|
||||
OTEL(#[from] opentelemetry_sdk::error::OTelSdkError),
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct TracingHandle {
|
||||
#[cfg(feature = "otlp")]
|
||||
/// A channel that can be sent to whenever traces/metrics should be flushed.
|
||||
/// Once flushing is finished, the sent oneshot::Sender will get triggered.
|
||||
flush_tx: Option<mpsc::Sender<oneshot::Sender<()>>>,
|
||||
|
||||
stdout_writer: IndicatifWriter<writer::Stdout>,
|
||||
stderr_writer: IndicatifWriter<writer::Stderr>,
|
||||
|
||||
#[cfg(feature = "otlp")]
|
||||
meter_provider: Option<opentelemetry_sdk::metrics::SdkMeterProvider>,
|
||||
|
||||
#[cfg(feature = "otlp")]
|
||||
tracer_provider: Option<opentelemetry_sdk::trace::SdkTracerProvider>,
|
||||
}
|
||||
|
||||
impl TracingHandle {
|
||||
|
|
@ -91,52 +85,31 @@ impl TracingHandle {
|
|||
/// It will wait until the flush is complete.
|
||||
pub async fn flush(&self) -> Result<(), Error> {
|
||||
#[cfg(feature = "otlp")]
|
||||
if let Some(flush_tx) = &self.flush_tx {
|
||||
let (tx, rx) = oneshot::channel();
|
||||
// Request the flush.
|
||||
flush_tx.send(tx).await?;
|
||||
|
||||
// Wait for it to be done.
|
||||
rx.await?;
|
||||
{
|
||||
if let Some(tracer_provider) = &self.tracer_provider {
|
||||
tracer_provider.force_flush()?;
|
||||
}
|
||||
if let Some(meter_provider) = &self.meter_provider {
|
||||
meter_provider.force_flush()?;
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// This will flush all all attached tracing providers and will wait until the flush is completed.
|
||||
/// This will flush all attached tracing providers and will wait until the flush is completed, then call shutdown.
|
||||
/// If no tracing providers like otlp are attached then this will be a noop.
|
||||
///
|
||||
/// This should only be called on a regular shutdown.
|
||||
/// If you correctly need to shutdown tracing on ctrl_c use [force_shutdown](#method.force_shutdown)
|
||||
/// otherwise you will get otlp errors.
|
||||
pub async fn shutdown(&self) -> Result<(), Error> {
|
||||
self.flush().await
|
||||
}
|
||||
|
||||
/// This will flush all all attached tracing providers and will wait until the flush is completed.
|
||||
/// After this it will do some other necessary cleanup.
|
||||
/// If no tracing providers like otlp are attached then this will be a noop.
|
||||
///
|
||||
/// This should only be used if the tool received an ctrl_c otherwise you will get otlp errors.
|
||||
/// If you need to shutdown tracing on a regular exit, you should use the [shutdown](#method.shutdown)
|
||||
/// method.
|
||||
pub async fn force_shutdown(&self) -> Result<(), Error> {
|
||||
self.flush().await?;
|
||||
|
||||
#[cfg(feature = "otlp")]
|
||||
{
|
||||
// Because of a bug within otlp we currently have to use spawn_blocking otherwise
|
||||
// calling `shutdown_tracer_provider` can block forever. See
|
||||
// https://github.com/open-telemetry/opentelemetry-rust/issues/1395#issuecomment-1953280335
|
||||
//
|
||||
// This still throws an error, if the tool exits regularly: "OpenTelemetry trace error
|
||||
// occurred. oneshot canceled", but not having this leads to errors if we cancel with
|
||||
// ctrl_c.
|
||||
// So this should right now only be used on ctrl_c, for a regular exit use the
|
||||
// [shutdown](#shutdown) method
|
||||
let _ = tokio::task::spawn_blocking(move || {
|
||||
opentelemetry::global::shutdown_tracer_provider();
|
||||
})
|
||||
.await;
|
||||
if let Some(tracer_provider) = &self.tracer_provider {
|
||||
tracer_provider.shutdown()?;
|
||||
}
|
||||
if let Some(meter_provider) = &self.meter_provider {
|
||||
meter_provider.shutdown()?;
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
|
|
@ -216,26 +189,34 @@ impl TracingBuilder {
|
|||
let layered = layered.and_then(TracyLayer::default());
|
||||
|
||||
#[cfg(feature = "otlp")]
|
||||
let mut flush_tx: Option<mpsc::Sender<oneshot::Sender<()>>> = None;
|
||||
let mut g_tracer_provider = None;
|
||||
#[cfg(feature = "otlp")]
|
||||
let mut g_meter_provider = None;
|
||||
|
||||
// Setup otlp if a service_name is configured
|
||||
#[cfg(feature = "otlp")]
|
||||
let layered = layered.and_then({
|
||||
if let Some(service_name) = self.service_name {
|
||||
if let Some(service_name) = self.service_name.map(String::from) {
|
||||
use opentelemetry::trace::TracerProvider;
|
||||
|
||||
// register a text map propagator for trace propagation
|
||||
opentelemetry::global::set_text_map_propagator(TraceContextPropagator::new());
|
||||
|
||||
let (tracer, meter_provider, sender) =
|
||||
gen_otlp_tracer_meter_provider(service_name.to_string());
|
||||
let tracer_provider = gen_tracer_provider(service_name.clone())
|
||||
.expect("Unable to configure trace provider");
|
||||
|
||||
flush_tx = Some(sender);
|
||||
let meter_provider =
|
||||
gen_meter_provider(service_name).expect("Unable to configure meter provider");
|
||||
|
||||
// Register the returned meter provider as the global one.
|
||||
// FUTUREWORK: store in the struct and provide getter instead?
|
||||
opentelemetry::global::set_meter_provider(meter_provider);
|
||||
// FUTUREWORK: store in the struct and provide getter too?
|
||||
opentelemetry::global::set_meter_provider(meter_provider.clone());
|
||||
|
||||
g_tracer_provider = Some(tracer_provider.clone());
|
||||
g_meter_provider = Some(meter_provider.clone());
|
||||
|
||||
// Create a tracing layer with the configured tracer
|
||||
Some(tracing_opentelemetry::layer().with_tracer(tracer))
|
||||
Some(tracing_opentelemetry::layer().with_tracer(tracer_provider.tracer("tvix")))
|
||||
} else {
|
||||
None
|
||||
}
|
||||
|
|
@ -256,10 +237,13 @@ impl TracingBuilder {
|
|||
.try_init()?;
|
||||
|
||||
Ok(TracingHandle {
|
||||
#[cfg(feature = "otlp")]
|
||||
flush_tx,
|
||||
stdout_writer,
|
||||
stderr_writer,
|
||||
|
||||
#[cfg(feature = "otlp")]
|
||||
meter_provider: g_meter_provider,
|
||||
#[cfg(feature = "otlp")]
|
||||
tracer_provider: g_tracer_provider,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -269,18 +253,11 @@ fn gen_resources(service_name: String) -> Resource {
|
|||
// use SdkProvidedResourceDetector.detect to detect resources,
|
||||
// but replace the default service name with our default.
|
||||
// https://github.com/open-telemetry/opentelemetry-rust/issues/1298
|
||||
|
||||
let resources = SdkProvidedResourceDetector.detect(std::time::Duration::from_secs(0));
|
||||
// SdkProvidedResourceDetector currently always sets
|
||||
// `service.name`, but we don't like its default.
|
||||
if resources.get("service.name".into()).unwrap() == "unknown_service".into() {
|
||||
resources.merge(&Resource::new([KeyValue::new(
|
||||
opentelemetry_semantic_conventions::resource::SERVICE_NAME,
|
||||
service_name,
|
||||
)]))
|
||||
} else {
|
||||
resources
|
||||
}
|
||||
//
|
||||
Resource::builder()
|
||||
.with_service_name(service_name)
|
||||
.with_detector(Box::new(SdkProvidedResourceDetector))
|
||||
.build()
|
||||
}
|
||||
|
||||
/// Returns an OTLP tracer, and the TX part of a channel, which can be used
|
||||
|
|
@ -288,17 +265,18 @@ fn gen_resources(service_name: String) -> Resource {
|
|||
#[cfg(feature = "otlp")]
|
||||
fn gen_tracer_provider(
|
||||
service_name: String,
|
||||
) -> Result<opentelemetry_sdk::trace::TracerProvider, opentelemetry::trace::TraceError> {
|
||||
use opentelemetry_otlp::SpanExporter;
|
||||
use opentelemetry_sdk::{runtime, trace::TracerProvider};
|
||||
) -> Result<opentelemetry_sdk::trace::SdkTracerProvider, opentelemetry::trace::TraceError> {
|
||||
use opentelemetry_otlp::{ExportConfig, SpanExporter, WithExportConfig};
|
||||
|
||||
let exporter = SpanExporter::builder().with_tonic().build()?;
|
||||
let exporter = SpanExporter::builder()
|
||||
.with_tonic()
|
||||
.with_export_config(ExportConfig::default())
|
||||
.build()?;
|
||||
|
||||
let tracer_provider = TracerProvider::builder()
|
||||
.with_batch_exporter(exporter, runtime::Tokio)
|
||||
let tracer_provider = opentelemetry_sdk::trace::SdkTracerProvider::builder()
|
||||
.with_batch_exporter(exporter)
|
||||
.with_resource(gen_resources(service_name))
|
||||
.build();
|
||||
|
||||
// Unclear how to configure this
|
||||
// let batch_config = BatchConfigBuilder::default()
|
||||
// // the default values for `max_export_batch_size` is set to 512, which we will fill
|
||||
|
|
@ -321,6 +299,14 @@ fn gen_tracer_provider(
|
|||
Ok(tracer_provider)
|
||||
}
|
||||
|
||||
// Metric export interval should be less than or equal to 15s
|
||||
// if the metrics may be converted to Prometheus metrics.
|
||||
// Prometheus' query engine and compatible implementations
|
||||
// require ~4 data points / interval for range queries,
|
||||
// so queries ranging over 1m requre <= 15s scrape intervals.
|
||||
// OTEL SDKS also respect the env var `OTEL_METRIC_EXPORT_INTERVAL` (no underscore prefix).
|
||||
const _OTEL_METRIC_EXPORT_INTERVAL: std::time::Duration = std::time::Duration::from_secs(10);
|
||||
|
||||
#[cfg(feature = "otlp")]
|
||||
fn gen_meter_provider(
|
||||
service_name: String,
|
||||
|
|
@ -328,76 +314,18 @@ fn gen_meter_provider(
|
|||
use std::time::Duration;
|
||||
|
||||
use opentelemetry_otlp::WithExportConfig;
|
||||
use opentelemetry_sdk::{
|
||||
metrics::{PeriodicReader, SdkMeterProvider},
|
||||
runtime,
|
||||
};
|
||||
use opentelemetry_sdk::metrics::{PeriodicReader, SdkMeterProvider};
|
||||
let exporter = opentelemetry_otlp::MetricExporter::builder()
|
||||
.with_tonic()
|
||||
.with_timeout(Duration::from_secs(10))
|
||||
.build()?;
|
||||
|
||||
let reader = PeriodicReader::builder(exporter)
|
||||
.with_interval(_OTEL_METRIC_EXPORT_INTERVAL)
|
||||
.build();
|
||||
|
||||
Ok(SdkMeterProvider::builder()
|
||||
.with_reader(
|
||||
PeriodicReader::builder(exporter, runtime::Tokio)
|
||||
.with_interval(Duration::from_secs(3))
|
||||
.with_timeout(Duration::from_secs(10))
|
||||
.build(),
|
||||
)
|
||||
.with_reader(reader)
|
||||
.with_resource(gen_resources(service_name))
|
||||
.build())
|
||||
}
|
||||
|
||||
/// Returns an OTLP tracer, and a meter provider, as well as the TX part
|
||||
/// of a channel, which can be used to request flushes (and signal back the
|
||||
/// completion of the flush).
|
||||
#[cfg(feature = "otlp")]
|
||||
fn gen_otlp_tracer_meter_provider(
|
||||
service_name: String,
|
||||
) -> (
|
||||
impl Tracer + tracing_opentelemetry::PreSampledTracer,
|
||||
opentelemetry_sdk::metrics::SdkMeterProvider,
|
||||
mpsc::Sender<oneshot::Sender<()>>,
|
||||
) {
|
||||
use opentelemetry::trace::TracerProvider;
|
||||
let tracer_provider =
|
||||
gen_tracer_provider(service_name.clone()).expect("Unable to configure trace provider");
|
||||
let meter_provider =
|
||||
gen_meter_provider(service_name).expect("Unable to configure meter provider");
|
||||
|
||||
// tracer_provider needs to be kept around so we can request flushes later.
|
||||
let tracer = tracer_provider.tracer("tvix");
|
||||
|
||||
// Set up a channel for flushing trace providers later
|
||||
let (flush_tx, mut flush_rx) = mpsc::channel::<oneshot::Sender<()>>(16);
|
||||
|
||||
// Spawning a task that listens on rx for any message. Once we receive a message we
|
||||
// correctly call flush on the tracer_provider.
|
||||
tokio::spawn({
|
||||
let meter_provider = meter_provider.clone();
|
||||
|
||||
async move {
|
||||
while let Some(m) = flush_rx.recv().await {
|
||||
// Because of a bug within otlp we currently have to use spawn_blocking
|
||||
// otherwise will calling `force_flush` block forever, especially if the
|
||||
// tool was closed with ctrl_c. See
|
||||
// https://github.com/open-telemetry/opentelemetry-rust/issues/1395#issuecomment-1953280335
|
||||
let _ = tokio::task::spawn_blocking({
|
||||
let tracer_provider = tracer_provider.clone();
|
||||
let meter_provider = meter_provider.clone();
|
||||
|
||||
move || {
|
||||
tracer_provider.force_flush();
|
||||
if let Err(e) = meter_provider.force_flush() {
|
||||
eprintln!("failed to flush meter provider: {}", e);
|
||||
}
|
||||
}
|
||||
})
|
||||
.await;
|
||||
let _ = m.send(());
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
(tracer, meter_provider, flush_tx)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7193,7 +7193,7 @@ rec {
|
|||
];
|
||||
features = {
|
||||
"axum" = [ "dep:axum" ];
|
||||
"otlp" = [ "dep:tracing-opentelemetry" "dep:opentelemetry" "dep:opentelemetry-otlp" "dep:opentelemetry_sdk" "dep:opentelemetry-http" "dep:opentelemetry-semantic-conventions" "reqwest-tracing?/opentelemetry_0_27" ];
|
||||
"otlp" = [ "dep:tracing-opentelemetry" "dep:opentelemetry" "dep:opentelemetry-otlp" "dep:opentelemetry_sdk" "dep:opentelemetry-http" "dep:opentelemetry-semantic-conventions" "reqwest-tracing?/opentelemetry_0_28" ];
|
||||
"reqwest" = [ "dep:reqwest-tracing" ];
|
||||
"tonic" = [ "dep:tonic" "dep:http" ];
|
||||
"tracy" = [ "dep:tracing-tracy" ];
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue