about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2024-11-22T13·58+0200
committerflokli <flokli@flokli.de>2024-11-23T09·40+0000
commit071516377927907792531b10c4d09acce87454c4 (patch)
tree26339417d429e44561f3ebdab4130bfb77d3f560
parentdc21f5e5432e70ed2838df799077b22aa0c3ac6a (diff)
chore(tvix): bump opentelemetry to 0.27 r/8948
Change-Id: I3afbd8c94e0bc2cdf30da1886ae05b922f8a718f
Reviewed-on: https://cl.tvl.fyi/c/depot/+/12822
Reviewed-by: Jonas Chevalier <zimbatm@zimbatm.com>
Reviewed-by: edef <edef@edef.eu>
Tested-by: BuildkiteCI
-rw-r--r--tvix/Cargo.lock140
-rw-r--r--tvix/Cargo.nix456
-rw-r--r--tvix/Cargo.toml16
-rw-r--r--tvix/crate-hashes.json2
-rw-r--r--tvix/default.nix2
-rw-r--r--tvix/tracing/Cargo.toml4
-rw-r--r--tvix/tracing/src/lib.rs106
-rw-r--r--users/edef/weave/Cargo.nix2
8 files changed, 218 insertions, 510 deletions
diff --git a/tvix/Cargo.lock b/tvix/Cargo.lock
index 52496265cb9c..ba00af0ac995 100644
--- a/tvix/Cargo.lock
+++ b/tvix/Cargo.lock
@@ -807,15 +807,6 @@ dependencies = [
 ]
 
 [[package]]
-name = "crossbeam-channel"
-version = "0.5.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2"
-dependencies = [
- "crossbeam-utils",
-]
-
-[[package]]
 name = "crossbeam-deque"
 version = "0.8.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2527,24 +2518,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
 
 [[package]]
 name = "opentelemetry"
-version = "0.22.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "900d57987be3f2aeb70d385fff9b27fb74c5723cc9a52d904d4f9c807a0667bf"
-dependencies = [
- "futures-core",
- "futures-sink",
- "js-sys",
- "once_cell",
- "pin-project-lite",
- "thiserror",
- "urlencoding",
-]
-
-[[package]]
-name = "opentelemetry"
-version = "0.24.0"
+version = "0.27.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c365a63eec4f55b7efeceb724f1336f26a9cf3427b70e59e2cd2a5b947fba96"
+checksum = "0f3cebff57f7dbd1255b44d8bddc2cebeb0ea677dbaa2e25a3070a91b318f660"
 dependencies = [
  "futures-core",
  "futures-sink",
@@ -2556,71 +2532,58 @@ dependencies = [
 
 [[package]]
 name = "opentelemetry-http"
-version = "0.13.0"
+version = "0.27.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ad31e9de44ee3538fb9d64fe3376c1362f406162434609e79aea2a41a0af78ab"
+checksum = "10a8a7f5f6ba7c1b286c2fbca0454eaba116f63bbe69ed250b642d36fbb04d80"
 dependencies = [
  "async-trait",
  "bytes",
  "http",
- "opentelemetry 0.24.0",
+ "opentelemetry",
 ]
 
 [[package]]
 name = "opentelemetry-otlp"
-version = "0.17.0"
+version = "0.27.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6b925a602ffb916fb7421276b86756027b37ee708f9dce2dbdcc51739f07e727"
+checksum = "91cf61a1868dacc576bf2b2a1c3e9ab150af7272909e80085c3173384fe11f76"
 dependencies = [
  "async-trait",
  "futures-core",
  "http",
- "opentelemetry 0.24.0",
+ "opentelemetry",
  "opentelemetry-proto",
- "opentelemetry_sdk 0.24.1",
+ "opentelemetry_sdk",
  "prost",
  "thiserror",
  "tokio",
  "tonic",
+ "tracing",
 ]
 
 [[package]]
 name = "opentelemetry-proto"
-version = "0.7.0"
+version = "0.27.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "30ee9f20bff9c984511a02f082dc8ede839e4a9bf15cc2487c8d6fea5ad850d9"
+checksum = "a6e05acbfada5ec79023c85368af14abd0b307c015e9064d249b2a950ef459a6"
 dependencies = [
- "opentelemetry 0.24.0",
- "opentelemetry_sdk 0.24.1",
+ "opentelemetry",
+ "opentelemetry_sdk",
  "prost",
  "tonic",
 ]
 
 [[package]]
-name = "opentelemetry_sdk"
-version = "0.22.1"
+name = "opentelemetry-semantic-conventions"
+version = "0.27.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e90c7113be649e31e9a0f8b5ee24ed7a16923b322c3c5ab6367469c049d6b7e"
-dependencies = [
- "async-trait",
- "crossbeam-channel",
- "futures-channel",
- "futures-executor",
- "futures-util",
- "glob",
- "once_cell",
- "opentelemetry 0.22.0",
- "ordered-float",
- "percent-encoding",
- "rand",
- "thiserror",
-]
+checksum = "bc1b6902ff63b32ef6c489e8048c5e253e2e4a803ea3ea7e783914536eb15c52"
 
 [[package]]
 name = "opentelemetry_sdk"
-version = "0.24.1"
+version = "0.27.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "692eac490ec80f24a17828d49b40b60f5aeaccdfe6a503f939713afd22bc28df"
+checksum = "27b742c1cae4693792cc564e58d75a2a0ba29421a34a85b50da92efa89ecb2bc"
 dependencies = [
  "async-trait",
  "futures-channel",
@@ -2628,22 +2591,14 @@ dependencies = [
  "futures-util",
  "glob",
  "once_cell",
- "opentelemetry 0.24.0",
+ "opentelemetry",
  "percent-encoding",
  "rand",
  "serde_json",
  "thiserror",
  "tokio",
  "tokio-stream",
-]
-
-[[package]]
-name = "ordered-float"
-version = "4.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44d501f1a72f71d3c063a6bbc8f7271fa73aa09fe5d6283b6571e2ed176a2537"
-dependencies = [
- "num-traits",
+ "tracing",
 ]
 
 [[package]]
@@ -3305,9 +3260,8 @@ dependencies = [
 
 [[package]]
 name = "reqwest-middleware"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "562ceb5a604d3f7c885a792d42c199fd8af239d0a51b2fa6a78aafa092452b04"
+version = "0.4.0"
+source = "git+https://github.com/TrueLayer/reqwest-middleware?rev=8a494c165734e24c62823714843e1c9347027e8a#8a494c165734e24c62823714843e1c9347027e8a"
 dependencies = [
  "anyhow",
  "async-trait",
@@ -3320,20 +3274,19 @@ dependencies = [
 
 [[package]]
 name = "reqwest-tracing"
-version = "0.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfdd9bfa64c72233d8dd99ab7883efcdefe9e16d46488ecb9228b71a2e2ceb45"
+version = "0.5.4"
+source = "git+https://github.com/TrueLayer/reqwest-middleware?rev=8a494c165734e24c62823714843e1c9347027e8a#8a494c165734e24c62823714843e1c9347027e8a"
 dependencies = [
  "anyhow",
  "async-trait",
  "getrandom",
  "http",
  "matchit 0.8.4",
- "opentelemetry 0.22.0",
+ "opentelemetry",
  "reqwest",
  "reqwest-middleware",
  "tracing",
- "tracing-opentelemetry 0.23.0",
+ "tracing-opentelemetry",
 ]
 
 [[package]]
@@ -4490,32 +4443,14 @@ dependencies = [
 
 [[package]]
 name = "tracing-opentelemetry"
-version = "0.23.0"
+version = "0.28.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9be14ba1bbe4ab79e9229f7f89fab8d120b865859f10527f31c033e599d2284"
+checksum = "97a971f6058498b5c0f1affa23e7ea202057a7301dbff68e968b2d578bcbd053"
 dependencies = [
  "js-sys",
  "once_cell",
- "opentelemetry 0.22.0",
- "opentelemetry_sdk 0.22.1",
- "smallvec",
- "tracing",
- "tracing-core",
- "tracing-log",
- "tracing-subscriber",
- "web-time",
-]
-
-[[package]]
-name = "tracing-opentelemetry"
-version = "0.25.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9784ed4da7d921bc8df6963f8c80a0e4ce34ba6ba76668acadd3edbd985ff3b"
-dependencies = [
- "js-sys",
- "once_cell",
- "opentelemetry 0.24.0",
- "opentelemetry_sdk 0.24.1",
+ "opentelemetry",
+ "opentelemetry_sdk",
  "smallvec",
  "tracing",
  "tracing-core",
@@ -4883,17 +4818,18 @@ dependencies = [
  "axum",
  "http",
  "indicatif",
- "opentelemetry 0.24.0",
+ "opentelemetry",
  "opentelemetry-http",
  "opentelemetry-otlp",
- "opentelemetry_sdk 0.24.1",
+ "opentelemetry-semantic-conventions",
+ "opentelemetry_sdk",
  "reqwest-tracing",
  "thiserror",
  "tokio",
  "tonic",
  "tracing",
  "tracing-indicatif",
- "tracing-opentelemetry 0.25.0",
+ "tracing-opentelemetry",
  "tracing-subscriber",
  "tracing-tracy",
 ]
@@ -5000,12 +4936,6 @@ dependencies = [
 ]
 
 [[package]]
-name = "urlencoding"
-version = "2.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da"
-
-[[package]]
 name = "utf8parse"
 version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/tvix/Cargo.nix b/tvix/Cargo.nix
index 76249061f1c0..43053de77754 100644
--- a/tvix/Cargo.nix
+++ b/tvix/Cargo.nix
@@ -2691,25 +2691,6 @@ rec {
         ];
 
       };
-      "crossbeam-channel" = rec {
-        crateName = "crossbeam-channel";
-        version = "0.5.13";
-        edition = "2021";
-        sha256 = "1wkx45r34v7g3wyi3lg2wz536lrrrab4h4hh741shfhr8rlhsj1k";
-        libName = "crossbeam_channel";
-        dependencies = [
-          {
-            name = "crossbeam-utils";
-            packageId = "crossbeam-utils";
-            usesDefaultFeatures = false;
-          }
-        ];
-        features = {
-          "default" = [ "std" ];
-          "std" = [ "crossbeam-utils/std" ];
-        };
-        resolvedDefaultFeatures = [ "default" "std" ];
-      };
       "crossbeam-deque" = rec {
         crateName = "crossbeam-deque";
         version = "0.8.5";
@@ -8045,58 +8026,11 @@ rec {
         ];
 
       };
-      "opentelemetry 0.22.0" = rec {
-        crateName = "opentelemetry";
-        version = "0.22.0";
-        edition = "2021";
-        sha256 = "1gv70rx8172g9n82v9f97ircax7v4ydzyprq1nvsxwp3gfc5f3ch";
-        dependencies = [
-          {
-            name = "futures-core";
-            packageId = "futures-core";
-          }
-          {
-            name = "futures-sink";
-            packageId = "futures-sink";
-          }
-          {
-            name = "js-sys";
-            packageId = "js-sys";
-            target = { target, features }: (("wasm32" == target."arch" or null) && (!("wasi" == target."os" or null)));
-          }
-          {
-            name = "once_cell";
-            packageId = "once_cell";
-          }
-          {
-            name = "pin-project-lite";
-            packageId = "pin-project-lite";
-            optional = true;
-          }
-          {
-            name = "thiserror";
-            packageId = "thiserror";
-            usesDefaultFeatures = false;
-          }
-          {
-            name = "urlencoding";
-            packageId = "urlencoding";
-          }
-        ];
-        features = {
-          "default" = [ "trace" ];
-          "logs_level_enabled" = [ "logs" ];
-          "pin-project-lite" = [ "dep:pin-project-lite" ];
-          "testing" = [ "trace" "metrics" ];
-          "trace" = [ "pin-project-lite" ];
-        };
-        resolvedDefaultFeatures = [ "default" "metrics" "pin-project-lite" "trace" ];
-      };
-      "opentelemetry 0.24.0" = rec {
+      "opentelemetry" = rec {
         crateName = "opentelemetry";
-        version = "0.24.0";
+        version = "0.27.0";
         edition = "2021";
-        sha256 = "15msgya5nandw9chxdr76k7sj9kg6gqj9dyfzrz5pxf4xrimldjc";
+        sha256 = "0q7n32rr22h7lcjjxanvfyk0xszb5kfbvn24bcjx3nzpazzyng0g";
         dependencies = [
           {
             name = "futures-core";
@@ -8128,18 +8062,20 @@ rec {
         ];
         features = {
           "default" = [ "trace" "metrics" "logs" ];
-          "logs_level_enabled" = [ "logs" ];
+          "internal-logs" = [ "tracing" ];
           "pin-project-lite" = [ "dep:pin-project-lite" ];
+          "spec_unstable_logs_enabled" = [ "logs" ];
           "testing" = [ "trace" "metrics" ];
           "trace" = [ "pin-project-lite" ];
+          "tracing" = [ "dep:tracing" ];
         };
         resolvedDefaultFeatures = [ "default" "logs" "metrics" "pin-project-lite" "trace" ];
       };
       "opentelemetry-http" = rec {
         crateName = "opentelemetry-http";
-        version = "0.13.0";
+        version = "0.27.0";
         edition = "2021";
-        sha256 = "1avqmyh42apakbkhjij3c9hl0brnq5v37zk4kpxkhdgf8kgfjcdd";
+        sha256 = "102dn3xkcbb41cjyssdy7gv1d8db9r2s1g1gdhl1nz5syvssga0h";
         libName = "opentelemetry_http";
         dependencies = [
           {
@@ -8158,7 +8094,7 @@ rec {
           }
           {
             name = "opentelemetry";
-            packageId = "opentelemetry 0.24.0";
+            packageId = "opentelemetry";
             features = [ "trace" ];
           }
         ];
@@ -8171,9 +8107,9 @@ rec {
       };
       "opentelemetry-otlp" = rec {
         crateName = "opentelemetry-otlp";
-        version = "0.17.0";
+        version = "0.27.0";
         edition = "2021";
-        sha256 = "09z70ygp6lfcplnwx7cgf3p3fyq2arkvhxhj8avnz4gv5xh5m4kb";
+        sha256 = "0xhzw57khwribh4817lhf9rayl5ik8z1qaibpxvcbb4dhshn3kwi";
         libName = "opentelemetry_otlp";
         dependencies = [
           {
@@ -8193,7 +8129,7 @@ rec {
           }
           {
             name = "opentelemetry";
-            packageId = "opentelemetry 0.24.0";
+            packageId = "opentelemetry";
             usesDefaultFeatures = false;
           }
           {
@@ -8203,7 +8139,7 @@ rec {
           }
           {
             name = "opentelemetry_sdk";
-            packageId = "opentelemetry_sdk 0.24.1";
+            packageId = "opentelemetry_sdk";
             usesDefaultFeatures = false;
           }
           {
@@ -8229,6 +8165,12 @@ rec {
             optional = true;
             usesDefaultFeatures = false;
           }
+          {
+            name = "tracing";
+            packageId = "tracing";
+            optional = true;
+            usesDefaultFeatures = false;
+          }
         ];
         devDependencies = [
           {
@@ -8239,16 +8181,19 @@ rec {
           }
         ];
         features = {
-          "default" = [ "grpc-tonic" "trace" "metrics" "logs" ];
+          "default" = [ "grpc-tonic" "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" ];
           "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" ];
@@ -8264,24 +8209,26 @@ rec {
           "tokio" = [ "dep:tokio" ];
           "tonic" = [ "dep:tonic" ];
           "trace" = [ "opentelemetry/trace" "opentelemetry_sdk/trace" "opentelemetry-proto/trace" ];
+          "tracing" = [ "dep:tracing" ];
+          "zstd-tonic" = [ "tonic/zstd" ];
         };
-        resolvedDefaultFeatures = [ "default" "grpc-tonic" "http" "logs" "metrics" "prost" "tokio" "tonic" "trace" ];
+        resolvedDefaultFeatures = [ "default" "grpc-tonic" "http" "internal-logs" "logs" "metrics" "prost" "tokio" "tonic" "trace" "tracing" ];
       };
       "opentelemetry-proto" = rec {
         crateName = "opentelemetry-proto";
-        version = "0.7.0";
+        version = "0.27.0";
         edition = "2021";
-        sha256 = "1nahv1dflvwdgi4c4p7ikd59x0yyivf85w02398q9jgrpwh9zvih";
+        sha256 = "19jryh79aalv4i6hds8mq03v7l5b2jpnhly84f8cfpnszb5mmq56";
         libName = "opentelemetry_proto";
         dependencies = [
           {
             name = "opentelemetry";
-            packageId = "opentelemetry 0.24.0";
+            packageId = "opentelemetry";
             usesDefaultFeatures = false;
           }
           {
             name = "opentelemetry_sdk";
-            packageId = "opentelemetry_sdk 0.24.1";
+            packageId = "opentelemetry_sdk";
             usesDefaultFeatures = false;
           }
           {
@@ -8297,13 +8244,6 @@ rec {
             features = [ "codegen" "prost" ];
           }
         ];
-        devDependencies = [
-          {
-            name = "opentelemetry";
-            packageId = "opentelemetry 0.24.0";
-            features = [ "testing" ];
-          }
-        ];
         features = {
           "default" = [ "full" ];
           "full" = [ "gen-tonic" "trace" "logs" "metrics" "zpages" "with-serde" ];
@@ -8324,103 +8264,20 @@ rec {
         };
         resolvedDefaultFeatures = [ "gen-tonic" "gen-tonic-messages" "logs" "metrics" "prost" "tonic" "trace" ];
       };
-      "opentelemetry_sdk 0.22.1" = rec {
-        crateName = "opentelemetry_sdk";
-        version = "0.22.1";
+      "opentelemetry-semantic-conventions" = rec {
+        crateName = "opentelemetry-semantic-conventions";
+        version = "0.27.0";
         edition = "2021";
-        sha256 = "0zkbkl29qik7cfmwbhr2ncink8fp9vi5x2qgk8gf6jg67c8wg44y";
-        dependencies = [
-          {
-            name = "async-trait";
-            packageId = "async-trait";
-            optional = true;
-          }
-          {
-            name = "crossbeam-channel";
-            packageId = "crossbeam-channel";
-            optional = true;
-          }
-          {
-            name = "futures-channel";
-            packageId = "futures-channel";
-          }
-          {
-            name = "futures-executor";
-            packageId = "futures-executor";
-          }
-          {
-            name = "futures-util";
-            packageId = "futures-util";
-            usesDefaultFeatures = false;
-            features = [ "std" "sink" "async-await-macro" ];
-          }
-          {
-            name = "glob";
-            packageId = "glob";
-            optional = true;
-          }
-          {
-            name = "once_cell";
-            packageId = "once_cell";
-          }
-          {
-            name = "opentelemetry";
-            packageId = "opentelemetry 0.22.0";
-          }
-          {
-            name = "ordered-float";
-            packageId = "ordered-float";
-          }
-          {
-            name = "percent-encoding";
-            packageId = "percent-encoding";
-            optional = true;
-          }
-          {
-            name = "rand";
-            packageId = "rand";
-            optional = true;
-            usesDefaultFeatures = false;
-            features = [ "std" "std_rng" "small_rng" ];
-          }
-          {
-            name = "thiserror";
-            packageId = "thiserror";
-            usesDefaultFeatures = false;
-          }
-        ];
-        features = {
-          "async-std" = [ "dep:async-std" ];
-          "async-trait" = [ "dep:async-trait" ];
-          "crossbeam-channel" = [ "dep:crossbeam-channel" ];
-          "default" = [ "trace" ];
-          "glob" = [ "dep:glob" ];
-          "http" = [ "dep:http" ];
-          "jaeger_remote_sampler" = [ "trace" "opentelemetry-http" "http" "serde" "serde_json" "url" ];
-          "logs" = [ "opentelemetry/logs" "crossbeam-channel" "async-trait" "serde_json" ];
-          "logs_level_enabled" = [ "logs" "opentelemetry/logs_level_enabled" ];
-          "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" ];
-          "serde" = [ "dep:serde" ];
-          "serde_json" = [ "dep:serde_json" ];
-          "testing" = [ "opentelemetry/testing" "trace" "metrics" "logs" "rt-async-std" "rt-tokio" "rt-tokio-current-thread" "tokio/macros" "tokio/rt-multi-thread" ];
-          "tokio" = [ "dep:tokio" ];
-          "tokio-stream" = [ "dep:tokio-stream" ];
-          "trace" = [ "opentelemetry/trace" "crossbeam-channel" "rand" "async-trait" "percent-encoding" ];
-          "url" = [ "dep:url" ];
-        };
-        resolvedDefaultFeatures = [ "async-trait" "crossbeam-channel" "glob" "metrics" "percent-encoding" "rand" "trace" ];
+        sha256 = "0ljwn5p5651rg1zfm8ryh152wgi5bs609s49qkv2xcv3zw16j6xw";
+        libName = "opentelemetry_semantic_conventions";
+        features = { };
+        resolvedDefaultFeatures = [ "default" ];
       };
-      "opentelemetry_sdk 0.24.1" = rec {
+      "opentelemetry_sdk" = rec {
         crateName = "opentelemetry_sdk";
-        version = "0.24.1";
+        version = "0.27.0";
         edition = "2021";
-        sha256 = "1pr8phigsfki77wh79g6vz6flnhgnr09pm18g2hj83y81r4sqbk9";
+        sha256 = "1g5jxj4zlbm91nsqajm346aa42rabbbmhkjnrj93fsg4rb0l5dr7";
         dependencies = [
           {
             name = "async-trait";
@@ -8452,7 +8309,7 @@ rec {
           }
           {
             name = "opentelemetry";
-            packageId = "opentelemetry 0.24.0";
+            packageId = "opentelemetry";
           }
           {
             name = "percent-encoding";
@@ -8488,16 +8345,23 @@ rec {
             packageId = "tokio-stream";
             optional = true;
           }
+          {
+            name = "tracing";
+            packageId = "tracing";
+            optional = true;
+            usesDefaultFeatures = false;
+          }
         ];
         features = {
           "async-std" = [ "dep:async-std" ];
           "async-trait" = [ "dep:async-trait" ];
-          "default" = [ "trace" "metrics" "logs" ];
+          "default" = [ "trace" "metrics" "logs" "internal-logs" ];
+          "experimental_metrics_periodic_reader_no_runtime" = [ "metrics" ];
           "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_level_enabled" = [ "logs" "opentelemetry/logs_level_enabled" ];
           "metrics" = [ "opentelemetry/metrics" "glob" "async-trait" ];
           "opentelemetry-http" = [ "dep:opentelemetry-http" ];
           "percent-encoding" = [ "dep:percent-encoding" ];
@@ -8507,51 +8371,16 @@ rec {
           "rt-tokio-current-thread" = [ "tokio" "tokio-stream" ];
           "serde" = [ "dep:serde" ];
           "serde_json" = [ "dep:serde_json" ];
+          "spec_unstable_logs_enabled" = [ "logs" "opentelemetry/spec_unstable_logs_enabled" ];
+          "spec_unstable_metrics_views" = [ "metrics" ];
           "testing" = [ "opentelemetry/testing" "trace" "metrics" "logs" "rt-async-std" "rt-tokio" "rt-tokio-current-thread" "tokio/macros" "tokio/rt-multi-thread" ];
           "tokio" = [ "dep:tokio" ];
           "tokio-stream" = [ "dep:tokio-stream" ];
           "trace" = [ "opentelemetry/trace" "rand" "async-trait" "percent-encoding" ];
+          "tracing" = [ "dep:tracing" ];
           "url" = [ "dep:url" ];
         };
-        resolvedDefaultFeatures = [ "async-trait" "default" "glob" "logs" "metrics" "percent-encoding" "rand" "rt-tokio" "serde_json" "tokio" "tokio-stream" "trace" ];
-      };
-      "ordered-float" = rec {
-        crateName = "ordered-float";
-        version = "4.3.0";
-        edition = "2021";
-        sha256 = "0dr5d8byvqkiclxjimp5kyh3m9qz4zvwifx6cg0d6w9glzqh3ma4";
-        libName = "ordered_float";
-        authors = [
-          "Jonathan Reem <jonathan.reem@gmail.com>"
-          "Matt Brubeck <mbrubeck@limpet.net>"
-        ];
-        dependencies = [
-          {
-            name = "num-traits";
-            packageId = "num-traits";
-            usesDefaultFeatures = false;
-          }
-        ];
-        features = {
-          "arbitrary" = [ "dep:arbitrary" ];
-          "borsh" = [ "dep:borsh" ];
-          "bytemuck" = [ "dep:bytemuck" ];
-          "default" = [ "std" ];
-          "num-cmp" = [ "dep:num-cmp" ];
-          "proptest" = [ "dep:proptest" ];
-          "rand" = [ "dep:rand" ];
-          "randtest" = [ "rand/std" "rand/std_rng" ];
-          "rkyv" = [ "rkyv_32" ];
-          "rkyv_16" = [ "dep:rkyv" "rkyv?/size_16" ];
-          "rkyv_32" = [ "dep:rkyv" "rkyv?/size_32" ];
-          "rkyv_64" = [ "dep:rkyv" "rkyv?/size_64" ];
-          "rkyv_ck" = [ "rkyv?/validation" ];
-          "schemars" = [ "dep:schemars" ];
-          "serde" = [ "dep:serde" "rand?/serde1" ];
-          "speedy" = [ "dep:speedy" ];
-          "std" = [ "num-traits/std" ];
-        };
-        resolvedDefaultFeatures = [ "default" "std" ];
+        resolvedDefaultFeatures = [ "async-trait" "default" "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";
@@ -10706,9 +10535,14 @@ rec {
       };
       "reqwest-middleware" = rec {
         crateName = "reqwest-middleware";
-        version = "0.3.3";
+        version = "0.4.0";
         edition = "2018";
-        sha256 = "011b8n9a1bwalyk2y6x5s0wz52pxk70l4bbrba47qgsdc1dfnb2n";
+        workspace_member = null;
+        src = pkgs.fetchgit {
+          url = "https://github.com/TrueLayer/reqwest-middleware";
+          rev = "8a494c165734e24c62823714843e1c9347027e8a";
+          sha256 = "10gaxsvqld8dfwnm0nk93sqbbd2mjl7zfdf6vglp6waka7h87mba";
+        };
         libName = "reqwest_middleware";
         authors = [
           "Rodrigo Gryzinski <rodrigo.gryzinski@truelayer.com>"
@@ -10761,9 +10595,14 @@ rec {
       };
       "reqwest-tracing" = rec {
         crateName = "reqwest-tracing";
-        version = "0.5.3";
+        version = "0.5.4";
         edition = "2018";
-        sha256 = "0igb5hp1mdr8jb5qwj26dphykvydxy1piawrvpc368n7ckx9ppdz";
+        workspace_member = null;
+        src = pkgs.fetchgit {
+          url = "https://github.com/TrueLayer/reqwest-middleware";
+          rev = "8a494c165734e24c62823714843e1c9347027e8a";
+          sha256 = "10gaxsvqld8dfwnm0nk93sqbbd2mjl7zfdf6vglp6waka7h87mba";
+        };
         libName = "reqwest_tracing";
         authors = [
           "Rodrigo Gryzinski <rodrigo.gryzinski@truelayer.com>"
@@ -10793,8 +10632,8 @@ rec {
           }
           {
             name = "opentelemetry";
-            packageId = "opentelemetry 0.22.0";
-            rename = "opentelemetry_0_22_pkg";
+            packageId = "opentelemetry";
+            rename = "opentelemetry_0_27_pkg";
             optional = true;
           }
           {
@@ -10812,8 +10651,8 @@ rec {
           }
           {
             name = "tracing-opentelemetry";
-            packageId = "tracing-opentelemetry 0.23.0";
-            rename = "tracing-opentelemetry_0_23_pkg";
+            packageId = "tracing-opentelemetry";
+            rename = "tracing-opentelemetry_0_28_pkg";
             optional = true;
           }
         ];
@@ -10835,13 +10674,22 @@ rec {
           "opentelemetry_0_23_pkg" = [ "dep:opentelemetry_0_23_pkg" ];
           "opentelemetry_0_24" = [ "opentelemetry_0_24_pkg" "tracing-opentelemetry_0_25_pkg" ];
           "opentelemetry_0_24_pkg" = [ "dep:opentelemetry_0_24_pkg" ];
+          "opentelemetry_0_25" = [ "opentelemetry_0_25_pkg" "tracing-opentelemetry_0_26_pkg" ];
+          "opentelemetry_0_25_pkg" = [ "dep:opentelemetry_0_25_pkg" ];
+          "opentelemetry_0_26" = [ "opentelemetry_0_26_pkg" "tracing-opentelemetry_0_27_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_pkg" = [ "dep:opentelemetry_0_27_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" ];
           "tracing-opentelemetry_0_24_pkg" = [ "dep:tracing-opentelemetry_0_24_pkg" ];
           "tracing-opentelemetry_0_25_pkg" = [ "dep:tracing-opentelemetry_0_25_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_28_pkg" = [ "dep:tracing-opentelemetry_0_28_pkg" ];
         };
-        resolvedDefaultFeatures = [ "opentelemetry_0_22" "opentelemetry_0_22_pkg" "tracing-opentelemetry_0_23_pkg" ];
+        resolvedDefaultFeatures = [ "opentelemetry_0_27" "opentelemetry_0_27_pkg" "tracing-opentelemetry_0_28_pkg" ];
       };
       "ring" = rec {
         crateName = "ring";
@@ -14704,112 +14552,11 @@ rec {
         };
         resolvedDefaultFeatures = [ "log-tracer" "std" ];
       };
-      "tracing-opentelemetry 0.23.0" = rec {
+      "tracing-opentelemetry" = rec {
         crateName = "tracing-opentelemetry";
-        version = "0.23.0";
-        edition = "2018";
-        sha256 = "1112kmckw0qwyckhbwarb230n4ldmfgzixr9jagbfjmy3fx19gm9";
-        libName = "tracing_opentelemetry";
-        authors = [
-          "Julian Tescher <julian@tescher.me>"
-          "Tokio Contributors <team@tokio.rs>"
-        ];
-        dependencies = [
-          {
-            name = "js-sys";
-            packageId = "js-sys";
-            target = { target, features }: (("wasm32" == target."arch" or null) && (!("wasi" == target."os" or null)));
-          }
-          {
-            name = "once_cell";
-            packageId = "once_cell";
-          }
-          {
-            name = "opentelemetry";
-            packageId = "opentelemetry 0.22.0";
-            usesDefaultFeatures = false;
-            features = [ "trace" ];
-          }
-          {
-            name = "opentelemetry_sdk";
-            packageId = "opentelemetry_sdk 0.22.1";
-            usesDefaultFeatures = false;
-            features = [ "trace" ];
-          }
-          {
-            name = "smallvec";
-            packageId = "smallvec";
-            optional = true;
-          }
-          {
-            name = "tracing";
-            packageId = "tracing";
-            usesDefaultFeatures = false;
-            features = [ "std" ];
-          }
-          {
-            name = "tracing-core";
-            packageId = "tracing-core";
-          }
-          {
-            name = "tracing-log";
-            packageId = "tracing-log";
-            optional = true;
-            usesDefaultFeatures = false;
-          }
-          {
-            name = "tracing-subscriber";
-            packageId = "tracing-subscriber";
-            usesDefaultFeatures = false;
-            features = [ "registry" "std" ];
-          }
-          {
-            name = "web-time";
-            packageId = "web-time";
-            target = { target, features }: (("wasm32" == target."arch" or null) && (!("wasi" == target."os" or null)));
-          }
-        ];
-        devDependencies = [
-          {
-            name = "opentelemetry";
-            packageId = "opentelemetry 0.22.0";
-            features = [ "trace" "metrics" ];
-          }
-          {
-            name = "opentelemetry_sdk";
-            packageId = "opentelemetry_sdk 0.22.1";
-            usesDefaultFeatures = false;
-            features = [ "trace" "rt-tokio" ];
-          }
-          {
-            name = "tracing";
-            packageId = "tracing";
-            usesDefaultFeatures = false;
-            features = [ "std" "attributes" ];
-          }
-          {
-            name = "tracing-subscriber";
-            packageId = "tracing-subscriber";
-            usesDefaultFeatures = false;
-            features = [ "registry" "std" "fmt" ];
-          }
-        ];
-        features = {
-          "async-trait" = [ "dep:async-trait" ];
-          "default" = [ "tracing-log" "metrics" ];
-          "futures-util" = [ "dep:futures-util" ];
-          "metrics" = [ "opentelemetry/metrics" "opentelemetry_sdk/metrics" "smallvec" ];
-          "smallvec" = [ "dep:smallvec" ];
-          "thiserror" = [ "dep:thiserror" ];
-          "tracing-log" = [ "dep:tracing-log" ];
-        };
-        resolvedDefaultFeatures = [ "default" "metrics" "smallvec" "tracing-log" ];
-      };
-      "tracing-opentelemetry 0.25.0" = rec {
-        crateName = "tracing-opentelemetry";
-        version = "0.25.0";
+        version = "0.28.0";
         edition = "2021";
-        sha256 = "0fzzhpcxngnxra56cxmslr5y6k0f1b4ghqv9vz41p4kxvba4wy59";
+        sha256 = "0lyhrf5mfbcbjs7gdgqx62kmf810xbkj7ymgy70bb6440pv73acp";
         libName = "tracing_opentelemetry";
         dependencies = [
           {
@@ -14823,13 +14570,13 @@ rec {
           }
           {
             name = "opentelemetry";
-            packageId = "opentelemetry 0.24.0";
+            packageId = "opentelemetry";
             usesDefaultFeatures = false;
             features = [ "trace" ];
           }
           {
             name = "opentelemetry_sdk";
-            packageId = "opentelemetry_sdk 0.24.1";
+            packageId = "opentelemetry_sdk";
             usesDefaultFeatures = false;
             features = [ "trace" ];
           }
@@ -14869,12 +14616,12 @@ rec {
         devDependencies = [
           {
             name = "opentelemetry";
-            packageId = "opentelemetry 0.24.0";
+            packageId = "opentelemetry";
             features = [ "trace" "metrics" ];
           }
           {
             name = "opentelemetry_sdk";
-            packageId = "opentelemetry_sdk 0.24.1";
+            packageId = "opentelemetry_sdk";
             usesDefaultFeatures = false;
             features = [ "trace" "rt-tokio" ];
           }
@@ -16219,6 +15966,7 @@ rec {
           {
             name = "reqwest-middleware";
             packageId = "reqwest-middleware";
+            usesDefaultFeatures = false;
           }
           {
             name = "serde";
@@ -16388,7 +16136,7 @@ rec {
           }
           {
             name = "opentelemetry";
-            packageId = "opentelemetry 0.24.0";
+            packageId = "opentelemetry";
             optional = true;
           }
           {
@@ -16402,8 +16150,13 @@ rec {
             optional = true;
           }
           {
+            name = "opentelemetry-semantic-conventions";
+            packageId = "opentelemetry-semantic-conventions";
+            optional = true;
+          }
+          {
             name = "opentelemetry_sdk";
-            packageId = "opentelemetry_sdk 0.24.1";
+            packageId = "opentelemetry_sdk";
             optional = true;
             features = [ "rt-tokio" ];
           }
@@ -16438,7 +16191,7 @@ rec {
           }
           {
             name = "tracing-opentelemetry";
-            packageId = "tracing-opentelemetry 0.25.0";
+            packageId = "tracing-opentelemetry";
             optional = true;
           }
           {
@@ -16455,7 +16208,7 @@ rec {
         ];
         features = {
           "axum" = [ "dep:axum" ];
-          "otlp" = [ "dep:tracing-opentelemetry" "dep:opentelemetry" "dep:opentelemetry-otlp" "dep:opentelemetry_sdk" "dep:opentelemetry-http" "reqwest-tracing?/opentelemetry_0_22" ];
+          "otlp" = [ "dep:tracing-opentelemetry" "dep:opentelemetry" "dep:opentelemetry-otlp" "dep:opentelemetry_sdk" "dep:opentelemetry-http" "dep:opentelemetry-semantic-conventions" "reqwest-tracing?/opentelemetry_0_27" ];
           "reqwest" = [ "dep:reqwest-tracing" ];
           "tonic" = [ "dep:tonic" "dep:http" ];
           "tracy" = [ "dep:tracing-tracy" ];
@@ -16696,17 +16449,6 @@ rec {
         };
         resolvedDefaultFeatures = [ "default" ];
       };
-      "urlencoding" = rec {
-        crateName = "urlencoding";
-        version = "2.1.3";
-        edition = "2021";
-        sha256 = "1nj99jp37k47n0hvaz5fvz7z6jd0sb4ppvfy3nphr1zbnyixpy6s";
-        authors = [
-          "Kornel <kornel@geekhood.net>"
-          "Bertram Truong <b@bertramtruong.com>"
-        ];
-
-      };
       "utf8parse" = rec {
         crateName = "utf8parse";
         version = "0.2.2";
diff --git a/tvix/Cargo.toml b/tvix/Cargo.toml
index 19f3a2b9c521..18527ee67f56 100644
--- a/tvix/Cargo.toml
+++ b/tvix/Cargo.toml
@@ -89,10 +89,11 @@ nohash-hasher = "0.2.0"
 nom = "7.1.3"
 num-traits = "0.2.19"
 object_store = "0.10.2"
-opentelemetry = "0.24.0"
-opentelemetry-http = "0.13.0"
-opentelemetry-otlp = "0.17.0"
-opentelemetry_sdk = "0.24.1"
+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"
 os_str_bytes = "6.6"
 parking_lot = "0.12.3"
 path-clean = "0.1"
@@ -108,8 +109,9 @@ quote = "1.0.37"
 redb = "2.1.2"
 regex = "1.10.6"
 reqwest = { version = "0.12.7", default-features = false }
-reqwest-middleware = "0.3.3"
-reqwest-tracing = { version = "0.5.3", default-features = false }
+# https://github.com/TrueLayer/reqwest-middleware/pull/201#issuecomment-2493960010
+reqwest-middleware = { git = "https://github.com/TrueLayer/reqwest-middleware", rev = "8a494c165734e24c62823714843e1c9347027e8a", default-features = false }
+reqwest-tracing = { git = "https://github.com/TrueLayer/reqwest-middleware", rev = "8a494c165734e24c62823714843e1c9347027e8a", default-features = false }
 rnix = "0.11.0"
 rowan = "*"
 rstest = "0.19.0"
@@ -144,7 +146,7 @@ tower = "0.4.13"
 tower-http = "0.5.2"
 tracing = "0.1.40"
 tracing-indicatif = "0.3.6"
-tracing-opentelemetry = "0.25.0"
+tracing-opentelemetry = "0.28.0"
 tracing-subscriber = "0.3.18"
 tracing-tracy = "0.11.2"
 trybuild = "1.0.99"
diff --git a/tvix/crate-hashes.json b/tvix/crate-hashes.json
index 42b46c2515d2..46a15356e97f 100644
--- a/tvix/crate-hashes.json
+++ b/tvix/crate-hashes.json
@@ -1,4 +1,6 @@
 {
+  "git+https://github.com/TrueLayer/reqwest-middleware?rev=8a494c165734e24c62823714843e1c9347027e8a#0.4.0": "10gaxsvqld8dfwnm0nk93sqbbd2mjl7zfdf6vglp6waka7h87mba",
+  "git+https://github.com/TrueLayer/reqwest-middleware?rev=8a494c165734e24c62823714843e1c9347027e8a#reqwest-tracing@0.5.4": "10gaxsvqld8dfwnm0nk93sqbbd2mjl7zfdf6vglp6waka7h87mba",
   "git+https://github.com/liufuyang/bigtable_rs?rev=1818355a5373a5bc2c84287e3a4e3807154ac8ef#0.2.10": "0mn6iw1z7gdxbarsqiwscbdr25nplwlvzs0rs51vgnnjfsnbgl6q",
   "git+https://github.com/tvlfyi/wu-manber.git#wu-manber@0.1.0": "1zhk83lbq99xzyjwphv2qrb8f8qgfqwa5bbbvyzm0z0bljsjv0pd"
 }
\ No newline at end of file
diff --git a/tvix/default.nix b/tvix/default.nix
index 49b6a9e03e11..dece9f06c0c5 100644
--- a/tvix/default.nix
+++ b/tvix/default.nix
@@ -19,6 +19,8 @@ let
           (lib.nameValuePair "${crates.internal.crates.${k}.crateName}-${crates.internal.crates.${k}.version}" crates.internal.crates.${k}.src.outputHash)
         ) [
         "bigtable_rs"
+        "reqwest-middleware"
+        "reqwest-tracing"
         "wu-manber"
       ]);
   };
diff --git a/tvix/tracing/Cargo.toml b/tvix/tracing/Cargo.toml
index f1621a472f2c..2f3d8f80e9a7 100644
--- a/tvix/tracing/Cargo.toml
+++ b/tvix/tracing/Cargo.toml
@@ -17,6 +17,7 @@ opentelemetry-otlp = { workspace = true, 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 }
+opentelemetry-semantic-conventions = { workspace = true, optional = true }
 
 tonic = { workspace = true, optional = true }
 http  = { workspace = true, optional = true }
@@ -33,7 +34,8 @@ otlp = [
   "dep:opentelemetry-otlp",
   "dep:opentelemetry_sdk",
   "dep:opentelemetry-http",
-  "reqwest-tracing?/opentelemetry_0_22",
+  "dep:opentelemetry-semantic-conventions",
+  "reqwest-tracing?/opentelemetry_0_27",
 ]
 tracy = [
   "dep:tracing-tracy"
diff --git a/tvix/tracing/src/lib.rs b/tvix/tracing/src/lib.rs
index 2c73b53a4a00..c7e4e275157d 100644
--- a/tvix/tracing/src/lib.rs
+++ b/tvix/tracing/src/lib.rs
@@ -7,7 +7,7 @@ use tracing_indicatif::{
 };
 use tracing_subscriber::{
     layer::{Identity, SubscriberExt},
-    util::SubscriberInitExt,
+    util::SubscriberInitExt as _,
     EnvFilter, Layer, Registry,
 };
 
@@ -20,7 +20,6 @@ use opentelemetry::{
 use opentelemetry_sdk::{
     propagation::TraceContextPropagator,
     resource::{ResourceDetector, SdkProvidedResourceDetector},
-    trace::BatchConfigBuilder,
     Resource,
 };
 #[cfg(feature = "tracy")]
@@ -261,50 +260,76 @@ impl TracingBuilder {
     }
 }
 
+#[cfg(feature = "otlp")]
+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
+    }
+}
+
+/// Returns an OTLP tracer, and 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_tracer_provider(
+    service_name: String,
+) -> Result<opentelemetry_sdk::trace::TracerProvider, opentelemetry::trace::TraceError> {
+    use opentelemetry_otlp::SpanExporter;
+    use opentelemetry_sdk::{runtime, trace::TracerProvider};
+
+    let exporter = SpanExporter::builder().with_tonic().build()?;
+
+    let tracer_provider = TracerProvider::builder()
+        .with_batch_exporter(exporter, runtime::Tokio)
+        .with_config(
+            opentelemetry_sdk::trace::Config::default().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
+    //     // pretty quickly, which will then result in an export. We want to make sure that
+    //     // the export is only done once the schedule is met and not as soon as 512 spans
+    //     // are collected.
+    //     .with_max_export_batch_size(4096)
+    //     // analog to default config `max_export_batch_size * 4`
+    //     .with_max_queue_size(4096 * 4)
+    //     // only force an export to the otlp collector every 10 seconds to reduce the amount
+    //     // of error messages if an otlp collector is not available
+    //     .with_scheduled_delay(std::time::Duration::from_secs(10))
+    //     .build();
+
+    // use opentelemetry_sdk::trace::BatchSpanProcessor;
+    // let batch_span_processor = BatchSpanProcessor::builder(exporter, runtime::Tokio)
+    //     .with_batch_config(batch_config)
+    //     .build();
+
+    Ok(tracer_provider)
+}
+
 /// Returns an OTLP tracer, and 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(
     service_name: String,
 ) -> (
-    impl Tracer + tracing_opentelemetry::PreSampledTracer,
+    impl Tracer + tracing_opentelemetry::PreSampledTracer + 'static,
     mpsc::Sender<oneshot::Sender<()>>,
 ) {
-    let tracer_provider = opentelemetry_otlp::new_pipeline()
-        .tracing()
-        .with_exporter(opentelemetry_otlp::new_exporter().tonic())
-        .with_batch_config(
-            BatchConfigBuilder::default()
-                // the default values for `max_export_batch_size` is set to 512, which we will fill
-                // pretty quickly, which will then result in an export. We want to make sure that
-                // the export is only done once the schedule is met and not as soon as 512 spans
-                // are collected.
-                .with_max_export_batch_size(4096)
-                // analog to default config `max_export_batch_size * 4`
-                .with_max_queue_size(4096 * 4)
-                // only force an export to the otlp collector every 10 seconds to reduce the amount
-                // of error messages if an otlp collector is not available
-                .with_scheduled_delay(std::time::Duration::from_secs(10))
-                .build(),
-        )
-        .with_trace_config(opentelemetry_sdk::trace::Config::default().with_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(
-                    "service.name",
-                    service_name,
-                )]))
-            } else {
-                resources
-            }
-        }))
-        .install_batch(opentelemetry_sdk::runtime::Tokio)
-        .expect("Failed to install batch exporter using Tokio");
+    let tracer_provider =
+        gen_tracer_provider(service_name.clone()).expect("Unable to configure trace provider");
 
     // tracer_provider needs to be kept around so we can request flushes later.
     let tracer = tracer_provider.tracer("tvix");
@@ -322,7 +347,10 @@ fn gen_otlp_tracer(
             // https://github.com/open-telemetry/opentelemetry-rust/issues/1395#issuecomment-1953280335
             let _ = tokio::task::spawn_blocking({
                 let tracer_provider = tracer_provider.clone();
-                move || tracer_provider.force_flush()
+
+                move || {
+                    tracer_provider.force_flush();
+                }
             })
             .await;
             let _ = m.send(());
diff --git a/users/edef/weave/Cargo.nix b/users/edef/weave/Cargo.nix
index ea1d8a1b2ef3..c4a52ad1b7cd 100644
--- a/users/edef/weave/Cargo.nix
+++ b/users/edef/weave/Cargo.nix
@@ -7193,7 +7193,7 @@ rec {
         ];
         features = {
           "axum" = [ "dep:axum" ];
-          "otlp" = [ "dep:tracing-opentelemetry" "dep:opentelemetry" "dep:opentelemetry-otlp" "dep:opentelemetry_sdk" "dep:opentelemetry-http" "reqwest-tracing?/opentelemetry_0_22" ];
+          "otlp" = [ "dep:tracing-opentelemetry" "dep:opentelemetry" "dep:opentelemetry-otlp" "dep:opentelemetry_sdk" "dep:opentelemetry-http" "dep:opentelemetry-semantic-conventions" "reqwest-tracing?/opentelemetry_0_27" ];
           "reqwest" = [ "dep:reqwest-tracing" ];
           "tonic" = [ "dep:tonic" "dep:http" ];
           "tracy" = [ "dep:tracing-tracy" ];