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]]
|
[[package]]
|
||||||
name = "opentelemetry"
|
name = "opentelemetry"
|
||||||
version = "0.27.1"
|
version = "0.28.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ab70038c28ed37b97d8ed414b6429d343a8bbf44c9f79ec854f3a643029ba6d7"
|
checksum = "236e667b670a5cdf90c258f5a55794ec5ac5027e960c224bff8367a59e1e6426"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"futures-core",
|
"futures-core",
|
||||||
"futures-sink",
|
"futures-sink",
|
||||||
"js-sys",
|
"js-sys",
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
"thiserror 1.0.69",
|
"thiserror 2.0.9",
|
||||||
"tracing",
|
"tracing",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "opentelemetry-http"
|
name = "opentelemetry-http"
|
||||||
version = "0.27.0"
|
version = "0.28.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "10a8a7f5f6ba7c1b286c2fbca0454eaba116f63bbe69ed250b642d36fbb04d80"
|
checksum = "a8863faf2910030d139fb48715ad5ff2f35029fc5f244f6d5f689ddcf4d26253"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"bytes",
|
"bytes",
|
||||||
"http 1.2.0",
|
"http 1.2.0",
|
||||||
"opentelemetry",
|
"opentelemetry",
|
||||||
|
"reqwest",
|
||||||
|
"tracing",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "opentelemetry-otlp"
|
name = "opentelemetry-otlp"
|
||||||
version = "0.27.0"
|
version = "0.28.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "91cf61a1868dacc576bf2b2a1c3e9ab150af7272909e80085c3173384fe11f76"
|
checksum = "5bef114c6d41bea83d6dc60eb41720eedd0261a67af57b66dd2b84ac46c01d91"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"futures-core",
|
"futures-core",
|
||||||
"http 1.2.0",
|
"http 1.2.0",
|
||||||
"opentelemetry",
|
"opentelemetry",
|
||||||
|
"opentelemetry-http",
|
||||||
"opentelemetry-proto",
|
"opentelemetry-proto",
|
||||||
"opentelemetry_sdk",
|
"opentelemetry_sdk",
|
||||||
"prost",
|
"prost",
|
||||||
"thiserror 1.0.69",
|
"reqwest",
|
||||||
|
"thiserror 2.0.9",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tonic",
|
"tonic",
|
||||||
"tracing",
|
"tracing",
|
||||||
|
|
@ -2871,9 +2875,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "opentelemetry-proto"
|
name = "opentelemetry-proto"
|
||||||
version = "0.27.0"
|
version = "0.28.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a6e05acbfada5ec79023c85368af14abd0b307c015e9064d249b2a950ef459a6"
|
checksum = "56f8870d3024727e99212eb3bb1762ec16e255e3e6f58eeb3dc8db1aa226746d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"opentelemetry",
|
"opentelemetry",
|
||||||
"opentelemetry_sdk",
|
"opentelemetry_sdk",
|
||||||
|
|
@ -2883,15 +2887,15 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "opentelemetry-semantic-conventions"
|
name = "opentelemetry-semantic-conventions"
|
||||||
version = "0.27.0"
|
version = "0.28.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "bc1b6902ff63b32ef6c489e8048c5e253e2e4a803ea3ea7e783914536eb15c52"
|
checksum = "2fb3a2f78c2d55362cd6c313b8abedfbc0142ab3c2676822068fd2ab7d51f9b7"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "opentelemetry_sdk"
|
name = "opentelemetry_sdk"
|
||||||
version = "0.27.1"
|
version = "0.28.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "231e9d6ceef9b0b2546ddf52335785ce41252bc7474ee8ba05bfad277be13ab8"
|
checksum = "84dfad6042089c7fc1f6118b7040dc2eb4ab520abbf410b79dc481032af39570"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"futures-channel",
|
"futures-channel",
|
||||||
|
|
@ -2902,7 +2906,7 @@ dependencies = [
|
||||||
"percent-encoding",
|
"percent-encoding",
|
||||||
"rand",
|
"rand",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"thiserror 1.0.69",
|
"thiserror 2.0.9",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tokio-stream",
|
"tokio-stream",
|
||||||
"tracing",
|
"tracing",
|
||||||
|
|
@ -3557,6 +3561,7 @@ checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base64 0.22.1",
|
"base64 0.22.1",
|
||||||
"bytes",
|
"bytes",
|
||||||
|
"futures-channel",
|
||||||
"futures-core",
|
"futures-core",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
"h2",
|
"h2",
|
||||||
|
|
@ -3598,8 +3603,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "reqwest-middleware"
|
name = "reqwest-middleware"
|
||||||
version = "0.4.0"
|
version = "0.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "git+https://github.com/TrueLayer/reqwest-middleware?rev=9fdba406c124c567e2302f1aec63483ed7db63b1#9fdba406c124c567e2302f1aec63483ed7db63b1"
|
||||||
checksum = "d1ccd3b55e711f91a9885a2fa6fbbb2e39db1776420b062efc058c6410f7e5e3"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
|
|
@ -3613,8 +3617,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "reqwest-tracing"
|
name = "reqwest-tracing"
|
||||||
version = "0.5.5"
|
version = "0.5.5"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "git+https://github.com/TrueLayer/reqwest-middleware?rev=9fdba406c124c567e2302f1aec63483ed7db63b1#9fdba406c124c567e2302f1aec63483ed7db63b1"
|
||||||
checksum = "73e6153390585f6961341b50e5a1931d6be6dee4292283635903c26ef9d980d2"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
|
|
@ -4767,9 +4770,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tower-http"
|
name = "tower-http"
|
||||||
version = "0.5.2"
|
version = "0.6.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5"
|
checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-compression",
|
"async-compression",
|
||||||
"bitflags 2.6.0",
|
"bitflags 2.6.0",
|
||||||
|
|
@ -4777,7 +4780,6 @@ dependencies = [
|
||||||
"futures-core",
|
"futures-core",
|
||||||
"http 1.2.0",
|
"http 1.2.0",
|
||||||
"http-body",
|
"http-body",
|
||||||
"http-body-util",
|
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tokio-util",
|
"tokio-util",
|
||||||
|
|
@ -4794,9 +4796,9 @@ checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tower-otel-http-metrics"
|
name = "tower-otel-http-metrics"
|
||||||
version = "0.10.0"
|
version = "0.11.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ed0ba983713ec0f5d512dc28091fa3c1cb8fa5487de32a1b0bc0cb4159f9f89f"
|
checksum = "dfb893a8ddabbf5cdab3c90e31c8399e638036a4a005b0ea03b3b319c2440c59"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"axum",
|
"axum",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
|
|
@ -4882,9 +4884,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tracing-opentelemetry"
|
name = "tracing-opentelemetry"
|
||||||
version = "0.28.0"
|
version = "0.29.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "97a971f6058498b5c0f1affa23e7ea202057a7301dbff68e968b2d578bcbd053"
|
checksum = "721f2d2569dce9f3dfbbddee5906941e953bfcdf736a62da3377f5751650cc36"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"js-sys",
|
"js-sys",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
|
|
|
||||||
177
tvix/Cargo.nix
177
tvix/Cargo.nix
|
|
@ -9032,9 +9032,9 @@ rec {
|
||||||
};
|
};
|
||||||
"opentelemetry" = rec {
|
"opentelemetry" = rec {
|
||||||
crateName = "opentelemetry";
|
crateName = "opentelemetry";
|
||||||
version = "0.27.1";
|
version = "0.28.0";
|
||||||
edition = "2021";
|
edition = "2021";
|
||||||
sha256 = "1mx6kc1479pkak49xxy98jzqnfilkm1bc56liryvjdzd52606w5b";
|
sha256 = "09k43sgaarw3zx5j434ngq1canpcjibsbxaqqa8dyp0acxxncvi3";
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{
|
{
|
||||||
name = "futures-core";
|
name = "futures-core";
|
||||||
|
|
@ -9058,7 +9058,7 @@ rec {
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "thiserror";
|
name = "thiserror";
|
||||||
packageId = "thiserror 1.0.69";
|
packageId = "thiserror 2.0.9";
|
||||||
optional = true;
|
optional = true;
|
||||||
usesDefaultFeatures = false;
|
usesDefaultFeatures = false;
|
||||||
}
|
}
|
||||||
|
|
@ -9076,7 +9076,7 @@ rec {
|
||||||
"internal-logs" = [ "tracing" ];
|
"internal-logs" = [ "tracing" ];
|
||||||
"pin-project-lite" = [ "dep:pin-project-lite" ];
|
"pin-project-lite" = [ "dep:pin-project-lite" ];
|
||||||
"spec_unstable_logs_enabled" = [ "logs" ];
|
"spec_unstable_logs_enabled" = [ "logs" ];
|
||||||
"testing" = [ "trace" "metrics" ];
|
"testing" = [ "trace" ];
|
||||||
"thiserror" = [ "dep:thiserror" ];
|
"thiserror" = [ "dep:thiserror" ];
|
||||||
"trace" = [ "pin-project-lite" "futures-sink" "futures-core" "thiserror" ];
|
"trace" = [ "pin-project-lite" "futures-sink" "futures-core" "thiserror" ];
|
||||||
"tracing" = [ "dep:tracing" ];
|
"tracing" = [ "dep:tracing" ];
|
||||||
|
|
@ -9085,9 +9085,9 @@ rec {
|
||||||
};
|
};
|
||||||
"opentelemetry-http" = rec {
|
"opentelemetry-http" = rec {
|
||||||
crateName = "opentelemetry-http";
|
crateName = "opentelemetry-http";
|
||||||
version = "0.27.0";
|
version = "0.28.0";
|
||||||
edition = "2021";
|
edition = "2021";
|
||||||
sha256 = "102dn3xkcbb41cjyssdy7gv1d8db9r2s1g1gdhl1nz5syvssga0h";
|
sha256 = "0lv2sbsdr7b8bxnly92zzhlm1wzjbynib1xlkw9hs0qh56pkz1m8";
|
||||||
libName = "opentelemetry_http";
|
libName = "opentelemetry_http";
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{
|
{
|
||||||
|
|
@ -9109,19 +9109,36 @@ rec {
|
||||||
packageId = "opentelemetry";
|
packageId = "opentelemetry";
|
||||||
features = [ "trace" ];
|
features = [ "trace" ];
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
name = "reqwest";
|
||||||
|
packageId = "reqwest";
|
||||||
|
optional = true;
|
||||||
|
usesDefaultFeatures = false;
|
||||||
|
features = [ "blocking" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "tracing";
|
||||||
|
packageId = "tracing";
|
||||||
|
optional = true;
|
||||||
|
usesDefaultFeatures = false;
|
||||||
|
}
|
||||||
];
|
];
|
||||||
features = {
|
features = {
|
||||||
|
"default" = [ "internal-logs" ];
|
||||||
"hyper" = [ "dep:http-body-util" "dep:hyper" "dep:hyper-util" "dep:tokio" ];
|
"hyper" = [ "dep:http-body-util" "dep:hyper" "dep:hyper-util" "dep:tokio" ];
|
||||||
|
"internal-logs" = [ "tracing" "opentelemetry/internal-logs" ];
|
||||||
"reqwest" = [ "dep:reqwest" ];
|
"reqwest" = [ "dep:reqwest" ];
|
||||||
"reqwest-rustls" = [ "reqwest" "reqwest/rustls-tls-native-roots" ];
|
"reqwest-rustls" = [ "reqwest" "reqwest/rustls-tls-native-roots" ];
|
||||||
"reqwest-rustls-webpki-roots" = [ "reqwest" "reqwest/rustls-tls-webpki-roots" ];
|
"reqwest-rustls-webpki-roots" = [ "reqwest" "reqwest/rustls-tls-webpki-roots" ];
|
||||||
|
"tracing" = [ "dep:tracing" ];
|
||||||
};
|
};
|
||||||
|
resolvedDefaultFeatures = [ "default" "internal-logs" "reqwest" "tracing" ];
|
||||||
};
|
};
|
||||||
"opentelemetry-otlp" = rec {
|
"opentelemetry-otlp" = rec {
|
||||||
crateName = "opentelemetry-otlp";
|
crateName = "opentelemetry-otlp";
|
||||||
version = "0.27.0";
|
version = "0.28.0";
|
||||||
edition = "2021";
|
edition = "2021";
|
||||||
sha256 = "0xhzw57khwribh4817lhf9rayl5ik8z1qaibpxvcbb4dhshn3kwi";
|
sha256 = "148xq13ar11bvmk7pxbslrhh5pgf40bv83n6dlysigj1dm613vsv";
|
||||||
libName = "opentelemetry_otlp";
|
libName = "opentelemetry_otlp";
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{
|
{
|
||||||
|
|
@ -9144,6 +9161,11 @@ rec {
|
||||||
packageId = "opentelemetry";
|
packageId = "opentelemetry";
|
||||||
usesDefaultFeatures = false;
|
usesDefaultFeatures = false;
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
name = "opentelemetry-http";
|
||||||
|
packageId = "opentelemetry-http";
|
||||||
|
optional = true;
|
||||||
|
}
|
||||||
{
|
{
|
||||||
name = "opentelemetry-proto";
|
name = "opentelemetry-proto";
|
||||||
packageId = "opentelemetry-proto";
|
packageId = "opentelemetry-proto";
|
||||||
|
|
@ -9159,9 +9181,15 @@ rec {
|
||||||
packageId = "prost";
|
packageId = "prost";
|
||||||
optional = true;
|
optional = true;
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
name = "reqwest";
|
||||||
|
packageId = "reqwest";
|
||||||
|
optional = true;
|
||||||
|
usesDefaultFeatures = false;
|
||||||
|
}
|
||||||
{
|
{
|
||||||
name = "thiserror";
|
name = "thiserror";
|
||||||
packageId = "thiserror 1.0.69";
|
packageId = "thiserror 2.0.9";
|
||||||
usesDefaultFeatures = false;
|
usesDefaultFeatures = false;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
|
|
@ -9193,19 +9221,18 @@ rec {
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
features = {
|
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" ];
|
"grpc-tonic" = [ "tonic" "prost" "http" "tokio" "opentelemetry-proto/gen-tonic" ];
|
||||||
"gzip-tonic" = [ "tonic/gzip" ];
|
"gzip-tonic" = [ "tonic/gzip" ];
|
||||||
"http" = [ "dep:http" ];
|
"http" = [ "dep:http" ];
|
||||||
"http-json" = [ "serde_json" "prost" "opentelemetry-http" "opentelemetry-proto/gen-tonic-messages" "opentelemetry-proto/with-serde" "http" "trace" "metrics" ];
|
"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" ];
|
"http-proto" = [ "prost" "opentelemetry-http" "opentelemetry-proto/gen-tonic-messages" "http" "trace" "metrics" ];
|
||||||
"hyper-client" = [ "opentelemetry-http/hyper" ];
|
"hyper-client" = [ "opentelemetry-http/hyper" ];
|
||||||
"integration-testing" = [ "tonic" "prost" "tokio/full" "trace" ];
|
"integration-testing" = [ "tonic" "prost" "tokio/full" "trace" "logs" ];
|
||||||
"internal-logs" = [ "tracing" ];
|
"internal-logs" = [ "tracing" "opentelemetry/internal-logs" ];
|
||||||
"logs" = [ "opentelemetry/logs" "opentelemetry_sdk/logs" "opentelemetry-proto/logs" ];
|
"logs" = [ "opentelemetry/logs" "opentelemetry_sdk/logs" "opentelemetry-proto/logs" ];
|
||||||
"metrics" = [ "opentelemetry/metrics" "opentelemetry_sdk/metrics" "opentelemetry-proto/metrics" ];
|
"metrics" = [ "opentelemetry/metrics" "opentelemetry_sdk/metrics" "opentelemetry-proto/metrics" ];
|
||||||
"opentelemetry-http" = [ "dep:opentelemetry-http" ];
|
"opentelemetry-http" = [ "dep:opentelemetry-http" ];
|
||||||
"populate-logs-event-name" = [ "opentelemetry-proto/populate-logs-event-name" ];
|
|
||||||
"prost" = [ "dep:prost" ];
|
"prost" = [ "dep:prost" ];
|
||||||
"reqwest" = [ "dep:reqwest" ];
|
"reqwest" = [ "dep:reqwest" ];
|
||||||
"reqwest-blocking-client" = [ "reqwest/blocking" "opentelemetry-http/reqwest" ];
|
"reqwest-blocking-client" = [ "reqwest/blocking" "opentelemetry-http/reqwest" ];
|
||||||
|
|
@ -9224,13 +9251,13 @@ rec {
|
||||||
"tracing" = [ "dep:tracing" ];
|
"tracing" = [ "dep:tracing" ];
|
||||||
"zstd-tonic" = [ "tonic/zstd" ];
|
"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 {
|
"opentelemetry-proto" = rec {
|
||||||
crateName = "opentelemetry-proto";
|
crateName = "opentelemetry-proto";
|
||||||
version = "0.27.0";
|
version = "0.28.0";
|
||||||
edition = "2021";
|
edition = "2021";
|
||||||
sha256 = "19jryh79aalv4i6hds8mq03v7l5b2jpnhly84f8cfpnszb5mmq56";
|
sha256 = "0vbl4si1mny87pmqxxg6wday45pcc8bvpcrf46cpwwi4606qgy2n";
|
||||||
libName = "opentelemetry_proto";
|
libName = "opentelemetry_proto";
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{
|
{
|
||||||
|
|
@ -9257,11 +9284,13 @@ rec {
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
features = {
|
features = {
|
||||||
|
"base64" = [ "dep:base64" ];
|
||||||
"default" = [ "full" ];
|
"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" = [ "gen-tonic-messages" "tonic/transport" ];
|
||||||
"gen-tonic-messages" = [ "tonic" "prost" ];
|
"gen-tonic-messages" = [ "tonic" "prost" ];
|
||||||
"hex" = [ "dep:hex" ];
|
"hex" = [ "dep:hex" ];
|
||||||
|
"internal-logs" = [ "tracing" ];
|
||||||
"logs" = [ "opentelemetry/logs" "opentelemetry_sdk/logs" ];
|
"logs" = [ "opentelemetry/logs" "opentelemetry_sdk/logs" ];
|
||||||
"metrics" = [ "opentelemetry/metrics" "opentelemetry_sdk/metrics" ];
|
"metrics" = [ "opentelemetry/metrics" "opentelemetry_sdk/metrics" ];
|
||||||
"prost" = [ "dep:prost" ];
|
"prost" = [ "dep:prost" ];
|
||||||
|
|
@ -9270,26 +9299,27 @@ rec {
|
||||||
"testing" = [ "opentelemetry/testing" ];
|
"testing" = [ "opentelemetry/testing" ];
|
||||||
"tonic" = [ "dep:tonic" ];
|
"tonic" = [ "dep:tonic" ];
|
||||||
"trace" = [ "opentelemetry/trace" "opentelemetry_sdk/trace" ];
|
"trace" = [ "opentelemetry/trace" "opentelemetry_sdk/trace" ];
|
||||||
|
"tracing" = [ "dep:tracing" ];
|
||||||
"with-schemars" = [ "schemars" ];
|
"with-schemars" = [ "schemars" ];
|
||||||
"with-serde" = [ "serde" "hex" ];
|
"with-serde" = [ "serde" "hex" "base64" ];
|
||||||
"zpages" = [ "trace" ];
|
"zpages" = [ "trace" ];
|
||||||
};
|
};
|
||||||
resolvedDefaultFeatures = [ "gen-tonic" "gen-tonic-messages" "logs" "metrics" "prost" "tonic" "trace" ];
|
resolvedDefaultFeatures = [ "gen-tonic" "gen-tonic-messages" "logs" "metrics" "prost" "tonic" "trace" ];
|
||||||
};
|
};
|
||||||
"opentelemetry-semantic-conventions" = rec {
|
"opentelemetry-semantic-conventions" = rec {
|
||||||
crateName = "opentelemetry-semantic-conventions";
|
crateName = "opentelemetry-semantic-conventions";
|
||||||
version = "0.27.0";
|
version = "0.28.0";
|
||||||
edition = "2021";
|
edition = "2021";
|
||||||
sha256 = "0ljwn5p5651rg1zfm8ryh152wgi5bs609s49qkv2xcv3zw16j6xw";
|
sha256 = "1dzra5yspllg0qi6hry2ncm19h7vxnmvh4y3sqn3cm9dikvs5crg";
|
||||||
libName = "opentelemetry_semantic_conventions";
|
libName = "opentelemetry_semantic_conventions";
|
||||||
features = { };
|
features = { };
|
||||||
resolvedDefaultFeatures = [ "default" ];
|
resolvedDefaultFeatures = [ "default" ];
|
||||||
};
|
};
|
||||||
"opentelemetry_sdk" = rec {
|
"opentelemetry_sdk" = rec {
|
||||||
crateName = "opentelemetry_sdk";
|
crateName = "opentelemetry_sdk";
|
||||||
version = "0.27.1";
|
version = "0.28.0";
|
||||||
edition = "2021";
|
edition = "2021";
|
||||||
sha256 = "1f1sw5xjgbdz0nxfhkj7qwmjahffhmbk6lnzdmab5c7rxrn9s7i3";
|
sha256 = "0w4mycm070f4knvi1x5v199apd1fvi0712qiyv0pz70889havpw4";
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{
|
{
|
||||||
name = "async-trait";
|
name = "async-trait";
|
||||||
|
|
@ -9338,7 +9368,7 @@ rec {
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "thiserror";
|
name = "thiserror";
|
||||||
packageId = "thiserror 1.0.69";
|
packageId = "thiserror 2.0.9";
|
||||||
usesDefaultFeatures = false;
|
usesDefaultFeatures = false;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
|
|
@ -9364,19 +9394,22 @@ rec {
|
||||||
"async-std" = [ "dep:async-std" ];
|
"async-std" = [ "dep:async-std" ];
|
||||||
"async-trait" = [ "dep:async-trait" ];
|
"async-trait" = [ "dep:async-trait" ];
|
||||||
"default" = [ "trace" "metrics" "logs" "internal-logs" ];
|
"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" ];
|
"glob" = [ "dep:glob" ];
|
||||||
"http" = [ "dep:http" ];
|
"http" = [ "dep:http" ];
|
||||||
"internal-logs" = [ "tracing" ];
|
"internal-logs" = [ "tracing" ];
|
||||||
"jaeger_remote_sampler" = [ "trace" "opentelemetry-http" "http" "serde" "serde_json" "url" ];
|
"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" ];
|
"metrics" = [ "opentelemetry/metrics" "glob" "async-trait" ];
|
||||||
"opentelemetry-http" = [ "dep:opentelemetry-http" ];
|
"opentelemetry-http" = [ "dep:opentelemetry-http" ];
|
||||||
"percent-encoding" = [ "dep:percent-encoding" ];
|
"percent-encoding" = [ "dep:percent-encoding" ];
|
||||||
"rand" = [ "dep:rand" ];
|
"rand" = [ "dep:rand" ];
|
||||||
"rt-async-std" = [ "async-std" ];
|
"rt-async-std" = [ "async-std" "experimental_async_runtime" ];
|
||||||
"rt-tokio" = [ "tokio" "tokio-stream" ];
|
"rt-tokio" = [ "tokio" "tokio-stream" "experimental_async_runtime" ];
|
||||||
"rt-tokio-current-thread" = [ "tokio" "tokio-stream" ];
|
"rt-tokio-current-thread" = [ "tokio" "tokio-stream" "experimental_async_runtime" ];
|
||||||
"serde" = [ "dep:serde" ];
|
"serde" = [ "dep:serde" ];
|
||||||
"serde_json" = [ "dep:serde_json" ];
|
"serde_json" = [ "dep:serde_json" ];
|
||||||
"spec_unstable_logs_enabled" = [ "logs" "opentelemetry/spec_unstable_logs_enabled" ];
|
"spec_unstable_logs_enabled" = [ "logs" "opentelemetry/spec_unstable_logs_enabled" ];
|
||||||
|
|
@ -9388,7 +9421,7 @@ rec {
|
||||||
"tracing" = [ "dep:tracing" ];
|
"tracing" = [ "dep:tracing" ];
|
||||||
"url" = [ "dep:url" ];
|
"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 {
|
"os_str_bytes" = rec {
|
||||||
crateName = "os_str_bytes";
|
crateName = "os_str_bytes";
|
||||||
|
|
@ -11353,6 +11386,12 @@ rec {
|
||||||
name = "bytes";
|
name = "bytes";
|
||||||
packageId = "bytes";
|
packageId = "bytes";
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
name = "futures-channel";
|
||||||
|
packageId = "futures-channel";
|
||||||
|
optional = true;
|
||||||
|
target = { target, features }: (!("wasm32" == target."arch" or null));
|
||||||
|
}
|
||||||
{
|
{
|
||||||
name = "futures-core";
|
name = "futures-core";
|
||||||
packageId = "futures-core";
|
packageId = "futures-core";
|
||||||
|
|
@ -11650,13 +11689,18 @@ rec {
|
||||||
"stream" = [ "tokio/fs" "dep:tokio-util" "dep:wasm-streams" ];
|
"stream" = [ "tokio/fs" "dep:tokio-util" "dep:wasm-streams" ];
|
||||||
"zstd" = [ "dep:async-compression" "async-compression?/zstd" "dep:tokio-util" ];
|
"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 {
|
"reqwest-middleware" = rec {
|
||||||
crateName = "reqwest-middleware";
|
crateName = "reqwest-middleware";
|
||||||
version = "0.4.0";
|
version = "0.4.0";
|
||||||
edition = "2018";
|
edition = "2018";
|
||||||
sha256 = "1qz5yw869305zhp0c2s2fqbxnf9fpgxscbssi2lr27vibssx7k6i";
|
workspace_member = null;
|
||||||
|
src = pkgs.fetchgit {
|
||||||
|
url = "https://github.com/TrueLayer/reqwest-middleware";
|
||||||
|
rev = "9fdba406c124c567e2302f1aec63483ed7db63b1";
|
||||||
|
sha256 = "0jn14w0pbixscp4vgcanpi36d7b9k5c2hvksa00l5xgsmkmxni7l";
|
||||||
|
};
|
||||||
libName = "reqwest_middleware";
|
libName = "reqwest_middleware";
|
||||||
authors = [
|
authors = [
|
||||||
"Rodrigo Gryzinski <rodrigo.gryzinski@truelayer.com>"
|
"Rodrigo Gryzinski <rodrigo.gryzinski@truelayer.com>"
|
||||||
|
|
@ -11711,7 +11755,12 @@ rec {
|
||||||
crateName = "reqwest-tracing";
|
crateName = "reqwest-tracing";
|
||||||
version = "0.5.5";
|
version = "0.5.5";
|
||||||
edition = "2018";
|
edition = "2018";
|
||||||
sha256 = "1ll0v7wnxhh3b5iq68i9wkgfcsqxjfhyal0v6ihnjpsqj0ribrkk";
|
workspace_member = null;
|
||||||
|
src = pkgs.fetchgit {
|
||||||
|
url = "https://github.com/TrueLayer/reqwest-middleware";
|
||||||
|
rev = "9fdba406c124c567e2302f1aec63483ed7db63b1";
|
||||||
|
sha256 = "0jn14w0pbixscp4vgcanpi36d7b9k5c2hvksa00l5xgsmkmxni7l";
|
||||||
|
};
|
||||||
libName = "reqwest_tracing";
|
libName = "reqwest_tracing";
|
||||||
authors = [
|
authors = [
|
||||||
"Rodrigo Gryzinski <rodrigo.gryzinski@truelayer.com>"
|
"Rodrigo Gryzinski <rodrigo.gryzinski@truelayer.com>"
|
||||||
|
|
@ -11742,7 +11791,7 @@ rec {
|
||||||
{
|
{
|
||||||
name = "opentelemetry";
|
name = "opentelemetry";
|
||||||
packageId = "opentelemetry";
|
packageId = "opentelemetry";
|
||||||
rename = "opentelemetry_0_27_pkg";
|
rename = "opentelemetry_0_28_pkg";
|
||||||
optional = true;
|
optional = true;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
|
|
@ -11761,7 +11810,7 @@ rec {
|
||||||
{
|
{
|
||||||
name = "tracing-opentelemetry";
|
name = "tracing-opentelemetry";
|
||||||
packageId = "tracing-opentelemetry";
|
packageId = "tracing-opentelemetry";
|
||||||
rename = "tracing-opentelemetry_0_28_pkg";
|
rename = "tracing-opentelemetry_0_29_pkg";
|
||||||
optional = true;
|
optional = true;
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
@ -11789,6 +11838,8 @@ rec {
|
||||||
"opentelemetry_0_26_pkg" = [ "dep:opentelemetry_0_26_pkg" ];
|
"opentelemetry_0_26_pkg" = [ "dep:opentelemetry_0_26_pkg" ];
|
||||||
"opentelemetry_0_27" = [ "opentelemetry_0_27_pkg" "tracing-opentelemetry_0_28_pkg" ];
|
"opentelemetry_0_27" = [ "opentelemetry_0_27_pkg" "tracing-opentelemetry_0_28_pkg" ];
|
||||||
"opentelemetry_0_27_pkg" = [ "dep:opentelemetry_0_27_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_21_pkg" = [ "dep:tracing-opentelemetry_0_21_pkg" ];
|
||||||
"tracing-opentelemetry_0_22_pkg" = [ "dep:tracing-opentelemetry_0_22_pkg" ];
|
"tracing-opentelemetry_0_22_pkg" = [ "dep:tracing-opentelemetry_0_22_pkg" ];
|
||||||
"tracing-opentelemetry_0_23_pkg" = [ "dep:tracing-opentelemetry_0_23_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_26_pkg" = [ "dep:tracing-opentelemetry_0_26_pkg" ];
|
||||||
"tracing-opentelemetry_0_27_pkg" = [ "dep:tracing-opentelemetry_0_27_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_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 {
|
"reserve-port" = rec {
|
||||||
crateName = "reserve-port";
|
crateName = "reserve-port";
|
||||||
|
|
@ -15544,9 +15596,9 @@ rec {
|
||||||
};
|
};
|
||||||
"tower-http" = rec {
|
"tower-http" = rec {
|
||||||
crateName = "tower-http";
|
crateName = "tower-http";
|
||||||
version = "0.5.2";
|
version = "0.6.2";
|
||||||
edition = "2018";
|
edition = "2018";
|
||||||
sha256 = "1xakj3x0anp55gjqibiwvzma5iz0w9pcjsr7qk97sx4qm4sd970y";
|
sha256 = "15wnvhl6cpir9125s73bqjzjsvfb0fmndmsimnl2ddnlhfvs6gs0";
|
||||||
libName = "tower_http";
|
libName = "tower_http";
|
||||||
authors = [
|
authors = [
|
||||||
"Tower Maintainers <team@tower-rs.com>"
|
"Tower Maintainers <team@tower-rs.com>"
|
||||||
|
|
@ -15579,10 +15631,7 @@ rec {
|
||||||
{
|
{
|
||||||
name = "http-body";
|
name = "http-body";
|
||||||
packageId = "http-body";
|
packageId = "http-body";
|
||||||
}
|
optional = true;
|
||||||
{
|
|
||||||
name = "http-body-util";
|
|
||||||
packageId = "http-body-util";
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "pin-project-lite";
|
name = "pin-project-lite";
|
||||||
|
|
@ -15621,6 +15670,10 @@ rec {
|
||||||
name = "bytes";
|
name = "bytes";
|
||||||
packageId = "bytes";
|
packageId = "bytes";
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
name = "http-body";
|
||||||
|
packageId = "http-body";
|
||||||
|
}
|
||||||
{
|
{
|
||||||
name = "tokio";
|
name = "tokio";
|
||||||
packageId = "tokio";
|
packageId = "tokio";
|
||||||
|
|
@ -15631,34 +15684,35 @@ rec {
|
||||||
"async-compression" = [ "dep:async-compression" ];
|
"async-compression" = [ "dep:async-compression" ];
|
||||||
"auth" = [ "base64" "validate-request" ];
|
"auth" = [ "base64" "validate-request" ];
|
||||||
"base64" = [ "dep:base64" ];
|
"base64" = [ "dep:base64" ];
|
||||||
"catch-panic" = [ "tracing" "futures-util/std" ];
|
"catch-panic" = [ "tracing" "futures-util/std" "dep:http-body" "dep:http-body-util" ];
|
||||||
"compression-br" = [ "async-compression/brotli" "futures-core" "tokio-util" "tokio" ];
|
"compression-br" = [ "async-compression/brotli" "futures-core" "dep:http-body" "tokio-util" "tokio" ];
|
||||||
"compression-deflate" = [ "async-compression/zlib" "futures-core" "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-full" = [ "compression-br" "compression-deflate" "compression-gzip" "compression-zstd" ];
|
||||||
"compression-gzip" = [ "async-compression/gzip" "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" "tokio-util" "tokio" ];
|
"compression-zstd" = [ "async-compression/zstd" "futures-core" "dep:http-body" "tokio-util" "tokio" ];
|
||||||
"decompression-br" = [ "async-compression/brotli" "futures-core" "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" "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-full" = [ "decompression-br" "decompression-deflate" "decompression-gzip" "decompression-zstd" ];
|
||||||
"decompression-gzip" = [ "async-compression/gzip" "futures-core" "tokio-util" "tokio" ];
|
"decompression-gzip" = [ "async-compression/gzip" "futures-core" "dep:http-body" "dep:http-body-util" "tokio-util" "tokio" ];
|
||||||
"decompression-zstd" = [ "async-compression/zstd" "futures-core" "tokio-util" "tokio" ];
|
"decompression-zstd" = [ "async-compression/zstd" "futures-core" "dep:http-body" "dep:http-body-util" "tokio-util" "tokio" ];
|
||||||
"follow-redirect" = [ "futures-util" "iri-string" "tower/util" ];
|
"follow-redirect" = [ "futures-util" "dep:http-body" "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" ];
|
"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" ];
|
"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-core" = [ "dep:futures-core" ];
|
||||||
"futures-util" = [ "dep:futures-util" ];
|
"futures-util" = [ "dep:futures-util" ];
|
||||||
"httpdate" = [ "dep:httpdate" ];
|
"httpdate" = [ "dep:httpdate" ];
|
||||||
"iri-string" = [ "dep:iri-string" ];
|
"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" = [ "dep:mime" ];
|
||||||
"mime_guess" = [ "dep:mime_guess" ];
|
"mime_guess" = [ "dep:mime_guess" ];
|
||||||
"percent-encoding" = [ "dep:percent-encoding" ];
|
"percent-encoding" = [ "dep:percent-encoding" ];
|
||||||
"request-id" = [ "uuid" ];
|
"request-id" = [ "uuid" ];
|
||||||
"timeout" = [ "tokio/time" ];
|
"timeout" = [ "dep:http-body" "tokio/time" ];
|
||||||
"tokio" = [ "dep:tokio" ];
|
"tokio" = [ "dep:tokio" ];
|
||||||
"tokio-util" = [ "dep:tokio-util" ];
|
"tokio-util" = [ "dep:tokio-util" ];
|
||||||
"tower" = [ "dep:tower" ];
|
"tower" = [ "dep:tower" ];
|
||||||
"trace" = [ "tracing" ];
|
"trace" = [ "dep:http-body" "tracing" ];
|
||||||
"tracing" = [ "dep:tracing" ];
|
"tracing" = [ "dep:tracing" ];
|
||||||
"util" = [ "tower" ];
|
"util" = [ "tower" ];
|
||||||
"uuid" = [ "dep:uuid" ];
|
"uuid" = [ "dep:uuid" ];
|
||||||
|
|
@ -15679,9 +15733,9 @@ rec {
|
||||||
};
|
};
|
||||||
"tower-otel-http-metrics" = rec {
|
"tower-otel-http-metrics" = rec {
|
||||||
crateName = "tower-otel-http-metrics";
|
crateName = "tower-otel-http-metrics";
|
||||||
version = "0.10.0";
|
version = "0.11.0";
|
||||||
edition = "2021";
|
edition = "2021";
|
||||||
sha256 = "17zqz5cl3jy01cdjmqvx92jqzjy1lcghja6w2bazbh1yf61sj2zd";
|
sha256 = "0n8c8k11kcxk0gmb01d0lhv80qwy774323n9ngd5rgxbvnl97f6z";
|
||||||
libName = "tower_otel_http_metrics";
|
libName = "tower_otel_http_metrics";
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{
|
{
|
||||||
|
|
@ -15951,9 +16005,9 @@ rec {
|
||||||
};
|
};
|
||||||
"tracing-opentelemetry" = rec {
|
"tracing-opentelemetry" = rec {
|
||||||
crateName = "tracing-opentelemetry";
|
crateName = "tracing-opentelemetry";
|
||||||
version = "0.28.0";
|
version = "0.29.0";
|
||||||
edition = "2021";
|
edition = "2021";
|
||||||
sha256 = "0lyhrf5mfbcbjs7gdgqx62kmf810xbkj7ymgy70bb6440pv73acp";
|
sha256 = "0dnca0b7bxbp6gd64skkvzy3p58yjh35kvnxpggz7sfwd4jjs7vj";
|
||||||
libName = "tracing_opentelemetry";
|
libName = "tracing_opentelemetry";
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{
|
{
|
||||||
|
|
@ -16041,9 +16095,9 @@ rec {
|
||||||
"futures-util" = [ "dep:futures-util" ];
|
"futures-util" = [ "dep:futures-util" ];
|
||||||
"lazy_static" = [ "dep:lazy_static" ];
|
"lazy_static" = [ "dep:lazy_static" ];
|
||||||
"metrics" = [ "opentelemetry/metrics" "opentelemetry_sdk/metrics" "smallvec" ];
|
"metrics" = [ "opentelemetry/metrics" "opentelemetry_sdk/metrics" "smallvec" ];
|
||||||
"metrics_gauge_unstable" = [ "opentelemetry/otel_unstable" ];
|
|
||||||
"smallvec" = [ "dep:smallvec" ];
|
"smallvec" = [ "dep:smallvec" ];
|
||||||
"thiserror" = [ "dep:thiserror" ];
|
"thiserror" = [ "dep:thiserror" ];
|
||||||
|
"thiserror-1" = [ "dep:thiserror-1" ];
|
||||||
"tracing-log" = [ "dep:tracing-log" ];
|
"tracing-log" = [ "dep:tracing-log" ];
|
||||||
};
|
};
|
||||||
resolvedDefaultFeatures = [ "default" "metrics" "smallvec" "tracing-log" ];
|
resolvedDefaultFeatures = [ "default" "metrics" "smallvec" "tracing-log" ];
|
||||||
|
|
@ -17619,6 +17673,7 @@ rec {
|
||||||
name = "opentelemetry-otlp";
|
name = "opentelemetry-otlp";
|
||||||
packageId = "opentelemetry-otlp";
|
packageId = "opentelemetry-otlp";
|
||||||
optional = true;
|
optional = true;
|
||||||
|
features = [ "grpc-tonic" ];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "opentelemetry-semantic-conventions";
|
name = "opentelemetry-semantic-conventions";
|
||||||
|
|
@ -17679,7 +17734,7 @@ rec {
|
||||||
];
|
];
|
||||||
features = {
|
features = {
|
||||||
"axum" = [ "dep:axum" ];
|
"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" ];
|
"reqwest" = [ "dep:reqwest-tracing" ];
|
||||||
"tonic" = [ "dep:tonic" "dep:http" ];
|
"tonic" = [ "dep:tonic" "dep:http" ];
|
||||||
"tracy" = [ "dep:tracing-tracy" ];
|
"tracy" = [ "dep:tracing-tracy" ];
|
||||||
|
|
|
||||||
|
|
@ -88,11 +88,11 @@ nohash-hasher = "0.2.0"
|
||||||
nom = "7.1.3"
|
nom = "7.1.3"
|
||||||
num-traits = "0.2.19"
|
num-traits = "0.2.19"
|
||||||
object_store = "0.10.2"
|
object_store = "0.10.2"
|
||||||
opentelemetry = "0.27.0"
|
opentelemetry = "0.28.0"
|
||||||
opentelemetry-http = "0.27.0"
|
opentelemetry-http = "0.28.0"
|
||||||
opentelemetry-otlp = "0.27.0"
|
opentelemetry-otlp = "0.28.0"
|
||||||
opentelemetry-semantic-conventions = "0.27.0"
|
opentelemetry-semantic-conventions = "0.28.0"
|
||||||
opentelemetry_sdk = "0.27.0"
|
opentelemetry_sdk = "0.28.0"
|
||||||
os_str_bytes = "6.6"
|
os_str_bytes = "6.6"
|
||||||
parking_lot = "0.12.3"
|
parking_lot = "0.12.3"
|
||||||
path-clean = "0.1"
|
path-clean = "0.1"
|
||||||
|
|
@ -108,8 +108,9 @@ quote = "1.0.37"
|
||||||
redb = "2.1.2"
|
redb = "2.1.2"
|
||||||
regex = "1.10.6"
|
regex = "1.10.6"
|
||||||
reqwest = { version = "0.12.7", default-features = false }
|
reqwest = { version = "0.12.7", default-features = false }
|
||||||
reqwest-middleware = { version = "0.4.0", default-features = false }
|
# https://github.com/TrueLayer/reqwest-middleware/issues/220
|
||||||
reqwest-tracing = { version = "0.5.5", default-features = false }
|
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"
|
rnix = "0.11.0"
|
||||||
rowan = "0.15" # keep in sync with rnix
|
rowan = "0.15" # keep in sync with rnix
|
||||||
rstest = "0.19.0"
|
rstest = "0.19.0"
|
||||||
|
|
@ -141,11 +142,11 @@ tonic-build = "0.12.2"
|
||||||
tonic-health = { version = "0.12.2", default-features = false }
|
tonic-health = { version = "0.12.2", default-features = false }
|
||||||
tonic-reflection = "0.12.2"
|
tonic-reflection = "0.12.2"
|
||||||
tower = "0.4.13"
|
tower = "0.4.13"
|
||||||
tower-http = "0.5.2"
|
tower-http = "0.6.2"
|
||||||
tower-otel-http-metrics = "0.10.0"
|
tower-otel-http-metrics = "0.11.0"
|
||||||
tracing = "0.1.40"
|
tracing = "0.1.40"
|
||||||
tracing-indicatif = "0.3.6"
|
tracing-indicatif = "0.3.6"
|
||||||
tracing-opentelemetry = "0.28.0"
|
tracing-opentelemetry = "0.29.0"
|
||||||
tracing-subscriber = "0.3.18"
|
tracing-subscriber = "0.3.18"
|
||||||
tracing-test = "0.2.5"
|
tracing-test = "0.2.5"
|
||||||
tracing-tracy = "0.11.2"
|
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"
|
"git+https://github.com/tvlfyi/wu-manber.git#wu-manber@0.1.0": "1zhk83lbq99xzyjwphv2qrb8f8qgfqwa5bbbvyzm0z0bljsjv0pd"
|
||||||
}
|
}
|
||||||
|
|
@ -18,6 +18,8 @@ let
|
||||||
(k:
|
(k:
|
||||||
(lib.nameValuePair "${crates.internal.crates.${k}.crateName}-${crates.internal.crates.${k}.version}" crates.internal.crates.${k}.src.outputHash)
|
(lib.nameValuePair "${crates.internal.crates.${k}.crateName}-${crates.internal.crates.${k}.version}" crates.internal.crates.${k}.src.outputHash)
|
||||||
) [
|
) [
|
||||||
|
"reqwest-middleware"
|
||||||
|
"reqwest-tracing"
|
||||||
"wu-manber"
|
"wu-manber"
|
||||||
]);
|
]);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
|
||||||
tokio::select! {
|
tokio::select! {
|
||||||
res = tokio::signal::ctrl_c() => {
|
res = tokio::signal::ctrl_c() => {
|
||||||
res?;
|
res?;
|
||||||
if let Err(e) = tracing_handle.force_shutdown().await {
|
if let Err(e) = tracing_handle.shutdown().await {
|
||||||
eprintln!("failed to shutdown tracing: {e}");
|
eprintln!("failed to shutdown tracing: {e}");
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
|
||||||
|
|
@ -541,7 +541,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
|
||||||
tokio::select! {
|
tokio::select! {
|
||||||
res = tokio::signal::ctrl_c() => {
|
res = tokio::signal::ctrl_c() => {
|
||||||
res?;
|
res?;
|
||||||
if let Err(e) = tracing_handle.force_shutdown().await {
|
if let Err(e) = tracing_handle.shutdown().await {
|
||||||
eprintln!("failed to shutdown tracing: {e}");
|
eprintln!("failed to shutdown tracing: {e}");
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ thiserror.workspace = true
|
||||||
|
|
||||||
tracing-opentelemetry = { workspace = true, optional = true }
|
tracing-opentelemetry = { workspace = true, optional = true }
|
||||||
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 }
|
opentelemetry_sdk = { workspace = true, features = ["rt-tokio"], optional = true }
|
||||||
tracing-tracy = { workspace = true, features = ["flush-on-exit"], optional = true }
|
tracing-tracy = { workspace = true, features = ["flush-on-exit"], optional = true }
|
||||||
opentelemetry-http = { workspace = true, optional = true }
|
opentelemetry-http = { workspace = true, optional = true }
|
||||||
|
|
@ -35,7 +35,7 @@ otlp = [
|
||||||
"dep:opentelemetry_sdk",
|
"dep:opentelemetry_sdk",
|
||||||
"dep:opentelemetry-http",
|
"dep:opentelemetry-http",
|
||||||
"dep:opentelemetry-semantic-conventions",
|
"dep:opentelemetry-semantic-conventions",
|
||||||
"reqwest-tracing?/opentelemetry_0_27",
|
"reqwest-tracing?/opentelemetry_0_28",
|
||||||
]
|
]
|
||||||
tracy = [
|
tracy = [
|
||||||
"dep:tracing-tracy"
|
"dep:tracing-tracy"
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
use indicatif::ProgressStyle;
|
use indicatif::ProgressStyle;
|
||||||
use std::sync::LazyLock;
|
use std::sync::LazyLock;
|
||||||
use tokio::sync::{mpsc, oneshot};
|
|
||||||
use tracing::level_filters::LevelFilter;
|
use tracing::level_filters::LevelFilter;
|
||||||
use tracing_indicatif::{
|
use tracing_indicatif::{
|
||||||
filter::IndicatifFilter, util::FilteredFormatFields, writer, IndicatifLayer, IndicatifWriter,
|
filter::IndicatifFilter, util::FilteredFormatFields, writer, IndicatifLayer, IndicatifWriter,
|
||||||
|
|
@ -11,13 +10,9 @@ use tracing_subscriber::{
|
||||||
EnvFilter, Layer, Registry,
|
EnvFilter, Layer, Registry,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[cfg(feature = "otlp")]
|
|
||||||
use opentelemetry::{trace::Tracer, KeyValue};
|
|
||||||
#[cfg(feature = "otlp")]
|
#[cfg(feature = "otlp")]
|
||||||
use opentelemetry_sdk::{
|
use opentelemetry_sdk::{
|
||||||
propagation::TraceContextPropagator,
|
propagation::TraceContextPropagator, resource::SdkProvidedResourceDetector, Resource,
|
||||||
resource::{ResourceDetector, SdkProvidedResourceDetector},
|
|
||||||
Resource,
|
|
||||||
};
|
};
|
||||||
#[cfg(feature = "tracy")]
|
#[cfg(feature = "tracy")]
|
||||||
use tracing_tracy::TracyLayer;
|
use tracing_tracy::TracyLayer;
|
||||||
|
|
@ -48,22 +43,21 @@ pub enum Error {
|
||||||
#[error(transparent)]
|
#[error(transparent)]
|
||||||
Init(#[from] tracing_subscriber::util::TryInitError),
|
Init(#[from] tracing_subscriber::util::TryInitError),
|
||||||
|
|
||||||
|
#[cfg(feature = "otlp")]
|
||||||
#[error(transparent)]
|
#[error(transparent)]
|
||||||
MpscSend(#[from] mpsc::error::SendError<oneshot::Sender<()>>),
|
OTEL(#[from] opentelemetry_sdk::error::OTelSdkError),
|
||||||
|
|
||||||
#[error(transparent)]
|
|
||||||
OneshotRecv(#[from] oneshot::error::RecvError),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct TracingHandle {
|
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>,
|
stdout_writer: IndicatifWriter<writer::Stdout>,
|
||||||
stderr_writer: IndicatifWriter<writer::Stderr>,
|
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 {
|
impl TracingHandle {
|
||||||
|
|
@ -91,52 +85,31 @@ impl TracingHandle {
|
||||||
/// It will wait until the flush is complete.
|
/// It will wait until the flush is complete.
|
||||||
pub async fn flush(&self) -> Result<(), Error> {
|
pub async fn flush(&self) -> Result<(), Error> {
|
||||||
#[cfg(feature = "otlp")]
|
#[cfg(feature = "otlp")]
|
||||||
if let Some(flush_tx) = &self.flush_tx {
|
{
|
||||||
let (tx, rx) = oneshot::channel();
|
if let Some(tracer_provider) = &self.tracer_provider {
|
||||||
// Request the flush.
|
tracer_provider.force_flush()?;
|
||||||
flush_tx.send(tx).await?;
|
}
|
||||||
|
if let Some(meter_provider) = &self.meter_provider {
|
||||||
// Wait for it to be done.
|
meter_provider.force_flush()?;
|
||||||
rx.await?;
|
}
|
||||||
}
|
}
|
||||||
Ok(())
|
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.
|
/// If no tracing providers like otlp are attached then this will be a noop.
|
||||||
///
|
///
|
||||||
/// This should only be called on a regular shutdown.
|
/// 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> {
|
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?;
|
self.flush().await?;
|
||||||
|
|
||||||
#[cfg(feature = "otlp")]
|
#[cfg(feature = "otlp")]
|
||||||
{
|
{
|
||||||
// Because of a bug within otlp we currently have to use spawn_blocking otherwise
|
if let Some(tracer_provider) = &self.tracer_provider {
|
||||||
// calling `shutdown_tracer_provider` can block forever. See
|
tracer_provider.shutdown()?;
|
||||||
// https://github.com/open-telemetry/opentelemetry-rust/issues/1395#issuecomment-1953280335
|
}
|
||||||
//
|
if let Some(meter_provider) = &self.meter_provider {
|
||||||
// This still throws an error, if the tool exits regularly: "OpenTelemetry trace error
|
meter_provider.shutdown()?;
|
||||||
// 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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
@ -216,26 +189,34 @@ impl TracingBuilder {
|
||||||
let layered = layered.and_then(TracyLayer::default());
|
let layered = layered.and_then(TracyLayer::default());
|
||||||
|
|
||||||
#[cfg(feature = "otlp")]
|
#[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
|
// Setup otlp if a service_name is configured
|
||||||
#[cfg(feature = "otlp")]
|
#[cfg(feature = "otlp")]
|
||||||
let layered = layered.and_then({
|
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
|
// register a text map propagator for trace propagation
|
||||||
opentelemetry::global::set_text_map_propagator(TraceContextPropagator::new());
|
opentelemetry::global::set_text_map_propagator(TraceContextPropagator::new());
|
||||||
|
|
||||||
let (tracer, meter_provider, sender) =
|
let tracer_provider = gen_tracer_provider(service_name.clone())
|
||||||
gen_otlp_tracer_meter_provider(service_name.to_string());
|
.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.
|
// Register the returned meter provider as the global one.
|
||||||
// FUTUREWORK: store in the struct and provide getter instead?
|
// FUTUREWORK: store in the struct and provide getter too?
|
||||||
opentelemetry::global::set_meter_provider(meter_provider);
|
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
|
// 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 {
|
} else {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|
@ -256,10 +237,13 @@ impl TracingBuilder {
|
||||||
.try_init()?;
|
.try_init()?;
|
||||||
|
|
||||||
Ok(TracingHandle {
|
Ok(TracingHandle {
|
||||||
#[cfg(feature = "otlp")]
|
|
||||||
flush_tx,
|
|
||||||
stdout_writer,
|
stdout_writer,
|
||||||
stderr_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,
|
// use SdkProvidedResourceDetector.detect to detect resources,
|
||||||
// but replace the default service name with our default.
|
// but replace the default service name with our default.
|
||||||
// https://github.com/open-telemetry/opentelemetry-rust/issues/1298
|
// https://github.com/open-telemetry/opentelemetry-rust/issues/1298
|
||||||
|
//
|
||||||
let resources = SdkProvidedResourceDetector.detect(std::time::Duration::from_secs(0));
|
Resource::builder()
|
||||||
// SdkProvidedResourceDetector currently always sets
|
.with_service_name(service_name)
|
||||||
// `service.name`, but we don't like its default.
|
.with_detector(Box::new(SdkProvidedResourceDetector))
|
||||||
if resources.get("service.name".into()).unwrap() == "unknown_service".into() {
|
.build()
|
||||||
resources.merge(&Resource::new([KeyValue::new(
|
|
||||||
opentelemetry_semantic_conventions::resource::SERVICE_NAME,
|
|
||||||
service_name,
|
|
||||||
)]))
|
|
||||||
} else {
|
|
||||||
resources
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns an OTLP tracer, and the TX part of a channel, which can be used
|
/// 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")]
|
#[cfg(feature = "otlp")]
|
||||||
fn gen_tracer_provider(
|
fn gen_tracer_provider(
|
||||||
service_name: String,
|
service_name: String,
|
||||||
) -> Result<opentelemetry_sdk::trace::TracerProvider, opentelemetry::trace::TraceError> {
|
) -> Result<opentelemetry_sdk::trace::SdkTracerProvider, opentelemetry::trace::TraceError> {
|
||||||
use opentelemetry_otlp::SpanExporter;
|
use opentelemetry_otlp::{ExportConfig, SpanExporter, WithExportConfig};
|
||||||
use opentelemetry_sdk::{runtime, trace::TracerProvider};
|
|
||||||
|
|
||||||
let exporter = SpanExporter::builder().with_tonic().build()?;
|
let exporter = SpanExporter::builder()
|
||||||
|
.with_tonic()
|
||||||
|
.with_export_config(ExportConfig::default())
|
||||||
|
.build()?;
|
||||||
|
|
||||||
let tracer_provider = TracerProvider::builder()
|
let tracer_provider = opentelemetry_sdk::trace::SdkTracerProvider::builder()
|
||||||
.with_batch_exporter(exporter, runtime::Tokio)
|
.with_batch_exporter(exporter)
|
||||||
.with_resource(gen_resources(service_name))
|
.with_resource(gen_resources(service_name))
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
// Unclear how to configure this
|
// Unclear how to configure this
|
||||||
// let batch_config = BatchConfigBuilder::default()
|
// let batch_config = BatchConfigBuilder::default()
|
||||||
// // the default values for `max_export_batch_size` is set to 512, which we will fill
|
// // 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)
|
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")]
|
#[cfg(feature = "otlp")]
|
||||||
fn gen_meter_provider(
|
fn gen_meter_provider(
|
||||||
service_name: String,
|
service_name: String,
|
||||||
|
|
@ -328,76 +314,18 @@ fn gen_meter_provider(
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
use opentelemetry_otlp::WithExportConfig;
|
use opentelemetry_otlp::WithExportConfig;
|
||||||
use opentelemetry_sdk::{
|
use opentelemetry_sdk::metrics::{PeriodicReader, SdkMeterProvider};
|
||||||
metrics::{PeriodicReader, SdkMeterProvider},
|
|
||||||
runtime,
|
|
||||||
};
|
|
||||||
let exporter = opentelemetry_otlp::MetricExporter::builder()
|
let exporter = opentelemetry_otlp::MetricExporter::builder()
|
||||||
.with_tonic()
|
.with_tonic()
|
||||||
.with_timeout(Duration::from_secs(10))
|
.with_timeout(Duration::from_secs(10))
|
||||||
.build()?;
|
.build()?;
|
||||||
|
|
||||||
|
let reader = PeriodicReader::builder(exporter)
|
||||||
|
.with_interval(_OTEL_METRIC_EXPORT_INTERVAL)
|
||||||
|
.build();
|
||||||
|
|
||||||
Ok(SdkMeterProvider::builder()
|
Ok(SdkMeterProvider::builder()
|
||||||
.with_reader(
|
.with_reader(reader)
|
||||||
PeriodicReader::builder(exporter, runtime::Tokio)
|
|
||||||
.with_interval(Duration::from_secs(3))
|
|
||||||
.with_timeout(Duration::from_secs(10))
|
|
||||||
.build(),
|
|
||||||
)
|
|
||||||
.with_resource(gen_resources(service_name))
|
.with_resource(gen_resources(service_name))
|
||||||
.build())
|
.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 = {
|
features = {
|
||||||
"axum" = [ "dep:axum" ];
|
"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" ];
|
"reqwest" = [ "dep:reqwest-tracing" ];
|
||||||
"tonic" = [ "dep:tonic" "dep:http" ];
|
"tonic" = [ "dep:tonic" "dep:http" ];
|
||||||
"tracy" = [ "dep:tracing-tracy" ];
|
"tracy" = [ "dep:tracing-tracy" ];
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue