From 5e13ff6f18b5638d8666c88c5fa59a87b22e8133 Mon Sep 17 00:00:00 2001 From: Rafal Korepta Date: Mon, 13 Apr 2026 18:28:18 +0200 Subject: [PATCH 01/10] Update common-go library to include otelutil fix --- acceptance/go.mod | 17 +++++++++-------- acceptance/go.sum | 40 ++++++++++++++++++++++++++-------------- charts/connectors/go.mod | 10 +++++----- charts/connectors/go.sum | 20 ++++++++++---------- charts/console/go.sum | 20 ++++++++++---------- charts/redpanda/go.sum | 20 ++++++++++---------- gen/go.sum | 24 ++++++++++++------------ go.work.sum | 6 ++++-- gotohelm/go.mod | 10 +++++----- gotohelm/go.sum | 20 ++++++++++---------- harpoon/go.mod | 2 +- harpoon/go.sum | 24 ++++++++++++------------ operator/go.mod | 16 +++++++++------- operator/go.sum | 40 ++++++++++++++++++++++++++-------------- pkg/go.mod | 18 +++++++++--------- pkg/go.sum | 40 ++++++++++++++++++++++++++-------------- 16 files changed, 184 insertions(+), 143 deletions(-) diff --git a/acceptance/go.mod b/acceptance/go.mod index 92919470c..3b51d9ffc 100644 --- a/acceptance/go.mod +++ b/acceptance/go.mod @@ -75,7 +75,6 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/buger/jsonparser v1.1.1 // indirect - github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chai2010/gettext-go v1.0.2 // indirect @@ -154,6 +153,7 @@ require ( github.com/hashicorp/go-memdb v1.3.4 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect + github.com/hashicorp/go-version v1.8.0 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/homeport/dyff v1.7.1 // indirect github.com/huandu/xstrings v1.5.0 // indirect @@ -219,7 +219,7 @@ require ( github.com/quasilyte/go-ruleguard/dsl v0.3.22 // indirect github.com/redpanda-data/common-go/goldenfile v0.0.0-20260109170727-1dd9f5d22ee1 // indirect github.com/redpanda-data/common-go/net v0.1.1-0.20240429123545-4da3d2b371f7 // indirect - github.com/redpanda-data/common-go/otelutil v0.0.0-20260109170727-1dd9f5d22ee1 // indirect + github.com/redpanda-data/common-go/otelutil v0.0.0-20260413160920-df1679f86269 // indirect github.com/redpanda-data/common-go/secrets v0.1.4 // indirect github.com/redpanda-data/console/backend v0.0.0-20260330203659-9db13eb40ef4 // indirect github.com/redpanda-data/redpanda-operator/charts/console/v3 v3.7.0 // indirect @@ -257,15 +257,16 @@ require ( go.etcd.io/etcd/client/v3 v3.6.8 // indirect go.etcd.io/raft/v3 v3.6.0 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/collector/pdata v1.32.0 // indirect - go.opentelemetry.io/contrib/bridges/prometheus v0.61.0 // indirect + go.opentelemetry.io/collector/featuregate v1.52.0 // indirect + go.opentelemetry.io/collector/pdata v1.52.0 // indirect + go.opentelemetry.io/contrib/bridges/prometheus v0.65.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0 // indirect go.opentelemetry.io/otel v1.43.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.16.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.16.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.40.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.40.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 // indirect go.opentelemetry.io/otel/log v0.16.0 // indirect diff --git a/acceptance/go.sum b/acceptance/go.sum index 415a83406..7183d8605 100644 --- a/acceptance/go.sum +++ b/acceptance/go.sum @@ -382,6 +382,8 @@ github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.8.0 h1:KAkNb1HAiZd1ukkxDFGmokVZe1Xy9HG6NUp+bPle2i4= +github.com/hashicorp/go-version v1.8.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= @@ -606,8 +608,8 @@ github.com/redpanda-data/common-go/kube v0.0.0-20260408144400-efba9928bb27 h1:73 github.com/redpanda-data/common-go/kube v0.0.0-20260408144400-efba9928bb27/go.mod h1:87/jKBvBse9m7PBwCxzISdxOpHblNKTqxZZNa1U1utM= github.com/redpanda-data/common-go/net v0.1.1-0.20240429123545-4da3d2b371f7 h1:MXLdjFdFjOtyuUR4TdVVsqFP8xnru2YDwzH9bJTUr1M= github.com/redpanda-data/common-go/net v0.1.1-0.20240429123545-4da3d2b371f7/go.mod h1:UJIi/yUxGOBYXUrfUsOkxfYxcb/ll7mZrwae/i+U2kc= -github.com/redpanda-data/common-go/otelutil v0.0.0-20260109170727-1dd9f5d22ee1 h1:fLBU7IJZq8PR88AkEdI5G+yyBsftionGapvAOMPW9hg= -github.com/redpanda-data/common-go/otelutil v0.0.0-20260109170727-1dd9f5d22ee1/go.mod h1:LzztzYWpD+e+A6hV6+eQhYY60zHQR7ePxhLgyMmRn/Q= +github.com/redpanda-data/common-go/otelutil v0.0.0-20260413160920-df1679f86269 h1:tEFqrnhUNN08Ye6n1FxtFHqkrFRhA0PGs2917v4JAOk= +github.com/redpanda-data/common-go/otelutil v0.0.0-20260413160920-df1679f86269/go.mod h1:/Ae7wJ1CFtjgvfmQ2QlMwdNNFQISUSeST3mlmJMuG3s= github.com/redpanda-data/common-go/rp-controller-utils v0.0.0-20260109170727-1dd9f5d22ee1 h1:pGPp5rJjnFM2z3JhuHSq099tltYjSf7bZT44zWQfovY= github.com/redpanda-data/common-go/rp-controller-utils v0.0.0-20260109170727-1dd9f5d22ee1/go.mod h1:y+TN+dzE/I/CnBIQesZ51SlixR3shI6QNhdZ55E0Yu8= github.com/redpanda-data/common-go/rpadmin v0.2.4 h1:XM7kfhKokWeLATX4dnLXczjd4sxN2AcJll/KRvE15iA= @@ -743,10 +745,14 @@ go.etcd.io/raft/v3 v3.6.0 h1:5NtvbDVYpnfZWcIHgGRk9DyzkBIXOi8j+DDp1IcnUWQ= go.etcd.io/raft/v3 v3.6.0/go.mod h1:nLvLevg6+xrVtHUmVaTcTz603gQPHfh7kUAwV6YpfGo= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= -go.opentelemetry.io/collector/pdata v1.32.0 h1:hBzlJV1rujr1UdD2CBy2gmaIKtC15ysg/z+x8F3McQA= -go.opentelemetry.io/collector/pdata v1.32.0/go.mod h1:m41io9nWpy7aCm/uD1L9QcKiZwOP0ldj83JEA34dmlk= -go.opentelemetry.io/contrib/bridges/prometheus v0.61.0 h1:RyrtJzu5MAmIcbRrwg75b+w3RlZCP0vJByDVzcpAe3M= -go.opentelemetry.io/contrib/bridges/prometheus v0.61.0/go.mod h1:tirr4p9NXbzjlbruiRGp53IzlYrDk5CO2fdHj0sSSaY= +go.opentelemetry.io/collector/featuregate v1.52.0 h1:Ba/6lL8BY+wWbQ8w7aOWzbyl4WG8i8eSGl2fnrBHBnE= +go.opentelemetry.io/collector/featuregate v1.52.0/go.mod h1:PS7zY/zaCb28EqciePVwRHVhc3oKortTFXsi3I6ee4g= +go.opentelemetry.io/collector/internal/testutil v0.146.1 h1:hpemuw5sLSYIqflJdScFikLhCjHxKuJWC2Lwyh9yeCI= +go.opentelemetry.io/collector/internal/testutil v0.146.1/go.mod h1:Jkjs6rkqs973LqgZ0Fe3zrokQRKULYXPIf4HuqStiEE= +go.opentelemetry.io/collector/pdata v1.52.0 h1:jp76qKVZsQqB6yK2C6bolPOi1uU+jhsTDsp71d5MOhk= +go.opentelemetry.io/collector/pdata v1.52.0/go.mod h1:+w6A2FXrMDDIwjRgQaud11Ifobng/j/FW3upZtaVKHc= +go.opentelemetry.io/contrib/bridges/prometheus v0.65.0 h1:I/7S/yWobR3QHFLqHsJ8QOndoiFsj1VgHpQiq43KlUI= +go.opentelemetry.io/contrib/bridges/prometheus v0.65.0/go.mod h1:jPF6gn3y1E+nozCAEQj3c6NZ8KY+tvAgSVfvoOJUFac= go.opentelemetry.io/contrib/exporters/autoexport v0.57.0 h1:jmTVJ86dP60C01K3slFQa2NQ/Aoi7zA+wy7vMOKD9H4= go.opentelemetry.io/contrib/exporters/autoexport v0.57.0/go.mod h1:EJBheUMttD/lABFyLXhce47Wr6DPWYReCzaZiXadH7g= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= @@ -755,14 +761,14 @@ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0 h1:7iP2uCb go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0/go.mod h1:c7hN3ddxs/z6q9xwvfLPk+UHlWRQyaeR1LdgfL/66l0= go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0 h1:HMUytBT3uGhPKYY/u/G5MR9itrlSO2SMOsSD3Tk3k7A= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0/go.mod h1:hdDXsiNLmdW/9BF2jQpnHHlhFajpWCEYfM6e5m2OAZg= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0 h1:C/Wi2F8wEmbxJ9Kuzw/nhP+Z9XaHYMkyDmXy6yR2cjw= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0/go.mod h1:0Lr9vmGKzadCTgsiBydxr6GEZ8SsZ7Ks53LzjWG5Ar4= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 h1:vl9obrcoWVKp/lwl8tRE33853I8Xru9HFbw/skNeLs8= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0/go.mod h1:GAXRxmLJcVM3u22IjTg74zWBrRCKq8BnOqUVLodpcpw= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0 h1:Oe2z/BCg5q7k4iXC3cqJxKYg0ieRiOqF0cecFYdPTwk= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0/go.mod h1:ZQM5lAJpOsKnYagGg/zV2krVqTtaVdYdDkhMoX6Oalg= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.16.0 h1:ZVg+kCXxd9LtAaQNKBxAvJ5NpMf7LpvEr4MIZqb0TMQ= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.16.0/go.mod h1:hh0tMeZ75CCXrHd9OXRYxTlCAdxcXioWHFIpYw2rZu8= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.16.0 h1:djrxvDxAe44mJUrKataUbOhCKhR3F8QCyWucO16hTQs= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.16.0/go.mod h1:dt3nxpQEiSoKvfTVxp3TUg5fHPLhKtbcnN3Z1I1ePD0= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.40.0 h1:NOyNnS19BF2SUDApbOKbDtWZ0IK7b8FJ2uAGdIWOGb0= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.40.0/go.mod h1:VL6EgVikRLcJa9ftukrHu/ZkkhFBSo1lzvdBC9CF1ss= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.40.0 h1:9y5sHvAxWzft1WQ4BwqcvA+IFVUJ1Ya75mSAUnFEVwE= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.40.0/go.mod h1:eQqT90eR3X5Dbs1g9YSM30RavwLF725Ris5/XSXWvqE= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 h1:QKdN8ly8zEMrByybbQgv8cWBcdAarwmIPZ6FThrWXJs= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0/go.mod h1:bTdK1nhqF76qiPoCCdyFIV+N/sRHYXYCTQc+3VCi3MI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 h1:DvJDOPmSWQHWywQS6lKL+pb8s3gBLOZUtw4N+mavW1I= @@ -793,6 +799,12 @@ go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09 go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A= go.opentelemetry.io/proto/otlp v1.9.0/go.mod h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4= +go.opentelemetry.io/proto/slim/otlp v1.9.0 h1:fPVMv8tP3TrsqlkH1HWYUpbCY9cAIemx184VGkS6vlE= +go.opentelemetry.io/proto/slim/otlp v1.9.0/go.mod h1:xXdeJJ90Gqyll+orzUkY4bOd2HECo5JofeoLpymVqdI= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.2.0 h1:o13nadWDNkH/quoDomDUClnQBpdQQ2Qqv0lQBjIXjE8= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.2.0/go.mod h1:Gyb6Xe7FTi/6xBHwMmngGoHqL0w29Y4eW8TGFzpefGA= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.2.0 h1:EiUYvtwu6PMrMHVjcPfnsG3v+ajPkbUeH+IL93+QYyk= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.2.0/go.mod h1:mUUHKFiN2SST3AhJ8XhJxEoeVW12oqfXog0Bo8W3Ec4= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= diff --git a/charts/connectors/go.mod b/charts/connectors/go.mod index cd469fcd4..3c5878bcf 100644 --- a/charts/connectors/go.mod +++ b/charts/connectors/go.mod @@ -169,14 +169,14 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.6.8 // indirect go.etcd.io/etcd/client/v3 v3.6.8 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/contrib/bridges/prometheus v0.61.0 // indirect + go.opentelemetry.io/contrib/bridges/prometheus v0.65.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0 // indirect go.opentelemetry.io/otel v1.43.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.16.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.16.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.40.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.40.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 // indirect go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.36.0 // indirect diff --git a/charts/connectors/go.sum b/charts/connectors/go.sum index 7e00e27e8..635915d32 100644 --- a/charts/connectors/go.sum +++ b/charts/connectors/go.sum @@ -484,8 +484,8 @@ go.etcd.io/raft/v3 v3.6.0 h1:5NtvbDVYpnfZWcIHgGRk9DyzkBIXOi8j+DDp1IcnUWQ= go.etcd.io/raft/v3 v3.6.0/go.mod h1:nLvLevg6+xrVtHUmVaTcTz603gQPHfh7kUAwV6YpfGo= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= -go.opentelemetry.io/contrib/bridges/prometheus v0.61.0 h1:RyrtJzu5MAmIcbRrwg75b+w3RlZCP0vJByDVzcpAe3M= -go.opentelemetry.io/contrib/bridges/prometheus v0.61.0/go.mod h1:tirr4p9NXbzjlbruiRGp53IzlYrDk5CO2fdHj0sSSaY= +go.opentelemetry.io/contrib/bridges/prometheus v0.65.0 h1:I/7S/yWobR3QHFLqHsJ8QOndoiFsj1VgHpQiq43KlUI= +go.opentelemetry.io/contrib/bridges/prometheus v0.65.0/go.mod h1:jPF6gn3y1E+nozCAEQj3c6NZ8KY+tvAgSVfvoOJUFac= go.opentelemetry.io/contrib/exporters/autoexport v0.57.0 h1:jmTVJ86dP60C01K3slFQa2NQ/Aoi7zA+wy7vMOKD9H4= go.opentelemetry.io/contrib/exporters/autoexport v0.57.0/go.mod h1:EJBheUMttD/lABFyLXhce47Wr6DPWYReCzaZiXadH7g= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= @@ -494,14 +494,14 @@ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0 h1:7iP2uCb go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0/go.mod h1:c7hN3ddxs/z6q9xwvfLPk+UHlWRQyaeR1LdgfL/66l0= go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0 h1:HMUytBT3uGhPKYY/u/G5MR9itrlSO2SMOsSD3Tk3k7A= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0/go.mod h1:hdDXsiNLmdW/9BF2jQpnHHlhFajpWCEYfM6e5m2OAZg= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0 h1:C/Wi2F8wEmbxJ9Kuzw/nhP+Z9XaHYMkyDmXy6yR2cjw= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0/go.mod h1:0Lr9vmGKzadCTgsiBydxr6GEZ8SsZ7Ks53LzjWG5Ar4= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 h1:vl9obrcoWVKp/lwl8tRE33853I8Xru9HFbw/skNeLs8= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0/go.mod h1:GAXRxmLJcVM3u22IjTg74zWBrRCKq8BnOqUVLodpcpw= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0 h1:Oe2z/BCg5q7k4iXC3cqJxKYg0ieRiOqF0cecFYdPTwk= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0/go.mod h1:ZQM5lAJpOsKnYagGg/zV2krVqTtaVdYdDkhMoX6Oalg= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.16.0 h1:ZVg+kCXxd9LtAaQNKBxAvJ5NpMf7LpvEr4MIZqb0TMQ= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.16.0/go.mod h1:hh0tMeZ75CCXrHd9OXRYxTlCAdxcXioWHFIpYw2rZu8= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.16.0 h1:djrxvDxAe44mJUrKataUbOhCKhR3F8QCyWucO16hTQs= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.16.0/go.mod h1:dt3nxpQEiSoKvfTVxp3TUg5fHPLhKtbcnN3Z1I1ePD0= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.40.0 h1:NOyNnS19BF2SUDApbOKbDtWZ0IK7b8FJ2uAGdIWOGb0= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.40.0/go.mod h1:VL6EgVikRLcJa9ftukrHu/ZkkhFBSo1lzvdBC9CF1ss= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.40.0 h1:9y5sHvAxWzft1WQ4BwqcvA+IFVUJ1Ya75mSAUnFEVwE= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.40.0/go.mod h1:eQqT90eR3X5Dbs1g9YSM30RavwLF725Ris5/XSXWvqE= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 h1:QKdN8ly8zEMrByybbQgv8cWBcdAarwmIPZ6FThrWXJs= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0/go.mod h1:bTdK1nhqF76qiPoCCdyFIV+N/sRHYXYCTQc+3VCi3MI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 h1:DvJDOPmSWQHWywQS6lKL+pb8s3gBLOZUtw4N+mavW1I= diff --git a/charts/console/go.sum b/charts/console/go.sum index f288ae25b..4cc0339cc 100644 --- a/charts/console/go.sum +++ b/charts/console/go.sum @@ -636,8 +636,8 @@ go.etcd.io/raft/v3 v3.6.0 h1:5NtvbDVYpnfZWcIHgGRk9DyzkBIXOi8j+DDp1IcnUWQ= go.etcd.io/raft/v3 v3.6.0/go.mod h1:nLvLevg6+xrVtHUmVaTcTz603gQPHfh7kUAwV6YpfGo= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= -go.opentelemetry.io/contrib/bridges/prometheus v0.61.0 h1:RyrtJzu5MAmIcbRrwg75b+w3RlZCP0vJByDVzcpAe3M= -go.opentelemetry.io/contrib/bridges/prometheus v0.61.0/go.mod h1:tirr4p9NXbzjlbruiRGp53IzlYrDk5CO2fdHj0sSSaY= +go.opentelemetry.io/contrib/bridges/prometheus v0.65.0 h1:I/7S/yWobR3QHFLqHsJ8QOndoiFsj1VgHpQiq43KlUI= +go.opentelemetry.io/contrib/bridges/prometheus v0.65.0/go.mod h1:jPF6gn3y1E+nozCAEQj3c6NZ8KY+tvAgSVfvoOJUFac= go.opentelemetry.io/contrib/exporters/autoexport v0.57.0 h1:jmTVJ86dP60C01K3slFQa2NQ/Aoi7zA+wy7vMOKD9H4= go.opentelemetry.io/contrib/exporters/autoexport v0.57.0/go.mod h1:EJBheUMttD/lABFyLXhce47Wr6DPWYReCzaZiXadH7g= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= @@ -646,14 +646,14 @@ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0 h1:7iP2uCb go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0/go.mod h1:c7hN3ddxs/z6q9xwvfLPk+UHlWRQyaeR1LdgfL/66l0= go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0 h1:HMUytBT3uGhPKYY/u/G5MR9itrlSO2SMOsSD3Tk3k7A= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0/go.mod h1:hdDXsiNLmdW/9BF2jQpnHHlhFajpWCEYfM6e5m2OAZg= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0 h1:C/Wi2F8wEmbxJ9Kuzw/nhP+Z9XaHYMkyDmXy6yR2cjw= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0/go.mod h1:0Lr9vmGKzadCTgsiBydxr6GEZ8SsZ7Ks53LzjWG5Ar4= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 h1:vl9obrcoWVKp/lwl8tRE33853I8Xru9HFbw/skNeLs8= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0/go.mod h1:GAXRxmLJcVM3u22IjTg74zWBrRCKq8BnOqUVLodpcpw= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0 h1:Oe2z/BCg5q7k4iXC3cqJxKYg0ieRiOqF0cecFYdPTwk= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0/go.mod h1:ZQM5lAJpOsKnYagGg/zV2krVqTtaVdYdDkhMoX6Oalg= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.16.0 h1:ZVg+kCXxd9LtAaQNKBxAvJ5NpMf7LpvEr4MIZqb0TMQ= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.16.0/go.mod h1:hh0tMeZ75CCXrHd9OXRYxTlCAdxcXioWHFIpYw2rZu8= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.16.0 h1:djrxvDxAe44mJUrKataUbOhCKhR3F8QCyWucO16hTQs= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.16.0/go.mod h1:dt3nxpQEiSoKvfTVxp3TUg5fHPLhKtbcnN3Z1I1ePD0= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.40.0 h1:NOyNnS19BF2SUDApbOKbDtWZ0IK7b8FJ2uAGdIWOGb0= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.40.0/go.mod h1:VL6EgVikRLcJa9ftukrHu/ZkkhFBSo1lzvdBC9CF1ss= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.40.0 h1:9y5sHvAxWzft1WQ4BwqcvA+IFVUJ1Ya75mSAUnFEVwE= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.40.0/go.mod h1:eQqT90eR3X5Dbs1g9YSM30RavwLF725Ris5/XSXWvqE= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 h1:QKdN8ly8zEMrByybbQgv8cWBcdAarwmIPZ6FThrWXJs= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0/go.mod h1:bTdK1nhqF76qiPoCCdyFIV+N/sRHYXYCTQc+3VCi3MI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 h1:DvJDOPmSWQHWywQS6lKL+pb8s3gBLOZUtw4N+mavW1I= diff --git a/charts/redpanda/go.sum b/charts/redpanda/go.sum index a5abd22e0..c9081cc8f 100644 --- a/charts/redpanda/go.sum +++ b/charts/redpanda/go.sum @@ -668,8 +668,8 @@ go.etcd.io/raft/v3 v3.6.0 h1:5NtvbDVYpnfZWcIHgGRk9DyzkBIXOi8j+DDp1IcnUWQ= go.etcd.io/raft/v3 v3.6.0/go.mod h1:nLvLevg6+xrVtHUmVaTcTz603gQPHfh7kUAwV6YpfGo= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= -go.opentelemetry.io/contrib/bridges/prometheus v0.61.0 h1:RyrtJzu5MAmIcbRrwg75b+w3RlZCP0vJByDVzcpAe3M= -go.opentelemetry.io/contrib/bridges/prometheus v0.61.0/go.mod h1:tirr4p9NXbzjlbruiRGp53IzlYrDk5CO2fdHj0sSSaY= +go.opentelemetry.io/contrib/bridges/prometheus v0.65.0 h1:I/7S/yWobR3QHFLqHsJ8QOndoiFsj1VgHpQiq43KlUI= +go.opentelemetry.io/contrib/bridges/prometheus v0.65.0/go.mod h1:jPF6gn3y1E+nozCAEQj3c6NZ8KY+tvAgSVfvoOJUFac= go.opentelemetry.io/contrib/exporters/autoexport v0.57.0 h1:jmTVJ86dP60C01K3slFQa2NQ/Aoi7zA+wy7vMOKD9H4= go.opentelemetry.io/contrib/exporters/autoexport v0.57.0/go.mod h1:EJBheUMttD/lABFyLXhce47Wr6DPWYReCzaZiXadH7g= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= @@ -678,14 +678,14 @@ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0 h1:7iP2uCb go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0/go.mod h1:c7hN3ddxs/z6q9xwvfLPk+UHlWRQyaeR1LdgfL/66l0= go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0 h1:HMUytBT3uGhPKYY/u/G5MR9itrlSO2SMOsSD3Tk3k7A= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0/go.mod h1:hdDXsiNLmdW/9BF2jQpnHHlhFajpWCEYfM6e5m2OAZg= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0 h1:C/Wi2F8wEmbxJ9Kuzw/nhP+Z9XaHYMkyDmXy6yR2cjw= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0/go.mod h1:0Lr9vmGKzadCTgsiBydxr6GEZ8SsZ7Ks53LzjWG5Ar4= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 h1:vl9obrcoWVKp/lwl8tRE33853I8Xru9HFbw/skNeLs8= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0/go.mod h1:GAXRxmLJcVM3u22IjTg74zWBrRCKq8BnOqUVLodpcpw= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0 h1:Oe2z/BCg5q7k4iXC3cqJxKYg0ieRiOqF0cecFYdPTwk= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0/go.mod h1:ZQM5lAJpOsKnYagGg/zV2krVqTtaVdYdDkhMoX6Oalg= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.16.0 h1:ZVg+kCXxd9LtAaQNKBxAvJ5NpMf7LpvEr4MIZqb0TMQ= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.16.0/go.mod h1:hh0tMeZ75CCXrHd9OXRYxTlCAdxcXioWHFIpYw2rZu8= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.16.0 h1:djrxvDxAe44mJUrKataUbOhCKhR3F8QCyWucO16hTQs= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.16.0/go.mod h1:dt3nxpQEiSoKvfTVxp3TUg5fHPLhKtbcnN3Z1I1ePD0= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.40.0 h1:NOyNnS19BF2SUDApbOKbDtWZ0IK7b8FJ2uAGdIWOGb0= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.40.0/go.mod h1:VL6EgVikRLcJa9ftukrHu/ZkkhFBSo1lzvdBC9CF1ss= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.40.0 h1:9y5sHvAxWzft1WQ4BwqcvA+IFVUJ1Ya75mSAUnFEVwE= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.40.0/go.mod h1:eQqT90eR3X5Dbs1g9YSM30RavwLF725Ris5/XSXWvqE= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 h1:QKdN8ly8zEMrByybbQgv8cWBcdAarwmIPZ6FThrWXJs= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0/go.mod h1:bTdK1nhqF76qiPoCCdyFIV+N/sRHYXYCTQc+3VCi3MI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 h1:DvJDOPmSWQHWywQS6lKL+pb8s3gBLOZUtw4N+mavW1I= diff --git a/gen/go.sum b/gen/go.sum index 3e52968aa..d19156464 100644 --- a/gen/go.sum +++ b/gen/go.sum @@ -586,8 +586,8 @@ github.com/redpanda-data/common-go/kube v0.0.0-20260408144400-efba9928bb27 h1:73 github.com/redpanda-data/common-go/kube v0.0.0-20260408144400-efba9928bb27/go.mod h1:87/jKBvBse9m7PBwCxzISdxOpHblNKTqxZZNa1U1utM= github.com/redpanda-data/common-go/net v0.1.1-0.20240429123545-4da3d2b371f7 h1:MXLdjFdFjOtyuUR4TdVVsqFP8xnru2YDwzH9bJTUr1M= github.com/redpanda-data/common-go/net v0.1.1-0.20240429123545-4da3d2b371f7/go.mod h1:UJIi/yUxGOBYXUrfUsOkxfYxcb/ll7mZrwae/i+U2kc= -github.com/redpanda-data/common-go/otelutil v0.0.0-20260109170727-1dd9f5d22ee1 h1:fLBU7IJZq8PR88AkEdI5G+yyBsftionGapvAOMPW9hg= -github.com/redpanda-data/common-go/otelutil v0.0.0-20260109170727-1dd9f5d22ee1/go.mod h1:LzztzYWpD+e+A6hV6+eQhYY60zHQR7ePxhLgyMmRn/Q= +github.com/redpanda-data/common-go/otelutil v0.0.0-20260413160920-df1679f86269 h1:tEFqrnhUNN08Ye6n1FxtFHqkrFRhA0PGs2917v4JAOk= +github.com/redpanda-data/common-go/otelutil v0.0.0-20260413160920-df1679f86269/go.mod h1:/Ae7wJ1CFtjgvfmQ2QlMwdNNFQISUSeST3mlmJMuG3s= github.com/redpanda-data/common-go/rp-controller-utils v0.0.0-20260109170727-1dd9f5d22ee1 h1:pGPp5rJjnFM2z3JhuHSq099tltYjSf7bZT44zWQfovY= github.com/redpanda-data/common-go/rp-controller-utils v0.0.0-20260109170727-1dd9f5d22ee1/go.mod h1:y+TN+dzE/I/CnBIQesZ51SlixR3shI6QNhdZ55E0Yu8= github.com/redpanda-data/common-go/rpadmin v0.2.4 h1:XM7kfhKokWeLATX4dnLXczjd4sxN2AcJll/KRvE15iA= @@ -718,8 +718,8 @@ go.etcd.io/raft/v3 v3.6.0 h1:5NtvbDVYpnfZWcIHgGRk9DyzkBIXOi8j+DDp1IcnUWQ= go.etcd.io/raft/v3 v3.6.0/go.mod h1:nLvLevg6+xrVtHUmVaTcTz603gQPHfh7kUAwV6YpfGo= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= -go.opentelemetry.io/contrib/bridges/prometheus v0.61.0 h1:RyrtJzu5MAmIcbRrwg75b+w3RlZCP0vJByDVzcpAe3M= -go.opentelemetry.io/contrib/bridges/prometheus v0.61.0/go.mod h1:tirr4p9NXbzjlbruiRGp53IzlYrDk5CO2fdHj0sSSaY= +go.opentelemetry.io/contrib/bridges/prometheus v0.65.0 h1:I/7S/yWobR3QHFLqHsJ8QOndoiFsj1VgHpQiq43KlUI= +go.opentelemetry.io/contrib/bridges/prometheus v0.65.0/go.mod h1:jPF6gn3y1E+nozCAEQj3c6NZ8KY+tvAgSVfvoOJUFac= go.opentelemetry.io/contrib/exporters/autoexport v0.57.0 h1:jmTVJ86dP60C01K3slFQa2NQ/Aoi7zA+wy7vMOKD9H4= go.opentelemetry.io/contrib/exporters/autoexport v0.57.0/go.mod h1:EJBheUMttD/lABFyLXhce47Wr6DPWYReCzaZiXadH7g= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= @@ -728,14 +728,14 @@ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0 h1:7iP2uCb go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0/go.mod h1:c7hN3ddxs/z6q9xwvfLPk+UHlWRQyaeR1LdgfL/66l0= go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0 h1:HMUytBT3uGhPKYY/u/G5MR9itrlSO2SMOsSD3Tk3k7A= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0/go.mod h1:hdDXsiNLmdW/9BF2jQpnHHlhFajpWCEYfM6e5m2OAZg= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0 h1:C/Wi2F8wEmbxJ9Kuzw/nhP+Z9XaHYMkyDmXy6yR2cjw= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0/go.mod h1:0Lr9vmGKzadCTgsiBydxr6GEZ8SsZ7Ks53LzjWG5Ar4= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 h1:vl9obrcoWVKp/lwl8tRE33853I8Xru9HFbw/skNeLs8= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0/go.mod h1:GAXRxmLJcVM3u22IjTg74zWBrRCKq8BnOqUVLodpcpw= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0 h1:Oe2z/BCg5q7k4iXC3cqJxKYg0ieRiOqF0cecFYdPTwk= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0/go.mod h1:ZQM5lAJpOsKnYagGg/zV2krVqTtaVdYdDkhMoX6Oalg= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.16.0 h1:ZVg+kCXxd9LtAaQNKBxAvJ5NpMf7LpvEr4MIZqb0TMQ= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.16.0/go.mod h1:hh0tMeZ75CCXrHd9OXRYxTlCAdxcXioWHFIpYw2rZu8= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.16.0 h1:djrxvDxAe44mJUrKataUbOhCKhR3F8QCyWucO16hTQs= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.16.0/go.mod h1:dt3nxpQEiSoKvfTVxp3TUg5fHPLhKtbcnN3Z1I1ePD0= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.40.0 h1:NOyNnS19BF2SUDApbOKbDtWZ0IK7b8FJ2uAGdIWOGb0= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.40.0/go.mod h1:VL6EgVikRLcJa9ftukrHu/ZkkhFBSo1lzvdBC9CF1ss= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.40.0 h1:9y5sHvAxWzft1WQ4BwqcvA+IFVUJ1Ya75mSAUnFEVwE= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.40.0/go.mod h1:eQqT90eR3X5Dbs1g9YSM30RavwLF725Ris5/XSXWvqE= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 h1:QKdN8ly8zEMrByybbQgv8cWBcdAarwmIPZ6FThrWXJs= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0/go.mod h1:bTdK1nhqF76qiPoCCdyFIV+N/sRHYXYCTQc+3VCi3MI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 h1:DvJDOPmSWQHWywQS6lKL+pb8s3gBLOZUtw4N+mavW1I= diff --git a/go.work.sum b/go.work.sum index 6c21e5030..b3f82cbde 100644 --- a/go.work.sum +++ b/go.work.sum @@ -2733,7 +2733,6 @@ github.com/redpanda-data/common-go/api v0.0.0-20251118002524-720a3c2f5569/go.mod github.com/redpanda-data/common-go/api v0.0.0-20260130192523-413455981e59 h1:eAOFa81IQOPhJ/7gEjcNwmPtHgdAma12UxHzajvgTAQ= github.com/redpanda-data/common-go/api v0.0.0-20260130192523-413455981e59/go.mod h1:klAmWfc8Q3hEZk8geFTMu6f2sk3VUKRS7cv/LvB05ig= github.com/redpanda-data/common-go/kube v0.0.0-20260116214328-0862a76e8f5e/go.mod h1:Ye/yB6LyJWUe0FkA6HCUOEflk4N+a4ycrw0J0Mrt0Es= -github.com/redpanda-data/common-go/kube v0.0.0-20260408144400-efba9928bb27/go.mod h1:87/jKBvBse9m7PBwCxzISdxOpHblNKTqxZZNa1U1utM= github.com/redpanda-data/common-go/net v0.1.0/go.mod h1:iOdNkjxM7a1T8F3cYHTaKIPFCHzzp/ia6TN+Z+7Tt5w= github.com/redpanda-data/common-go/proto v0.0.0-20250422172326-6a3bcb14b829 h1:fx1Z+t/fa0vd7kAblgCrdYRW3QHc3svYiVnO1DadS94= github.com/redpanda-data/common-go/proto v0.0.0-20250422172326-6a3bcb14b829/go.mod h1:6WXvgZCZIkbQCNsvU5zTx/+ub5eXTuCcl90i5xkhMw0= @@ -3167,6 +3166,7 @@ go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNM go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= go.opentelemetry.io/otel/exporters/otlp v0.20.0 h1:PTNgq9MRmQqqJY0REVbZFvwkYOA85vbdQU/nVfxDyqg= go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.3.0/go.mod h1:VpP4/RMn8bv8gNo9uK7/IMY4mtWLELsS+JIP0inH0h4= @@ -3216,6 +3216,7 @@ go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zL go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= go.opentelemetry.io/otel/sdk v1.3.0/go.mod h1:rIo4suHNhQwBIPg9axF8V9CA72Wz2mKF1teNrup8yzs= @@ -3262,6 +3263,7 @@ go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2 go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.11.0/go.mod h1:QpEjXPrNQzrFDZgoTo49dgHR9RYRSrg3NAKnUGl9YpQ= go.opentelemetry.io/proto/otlp v0.16.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= @@ -4033,9 +4035,9 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250826171959-ef028d996bc1/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20250929231259-57b25ae835d4/go.mod h1:HSkG/KdJWusxU1F6CNrwNDjBMgisKxGnc5dAZfT0mjQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20251103181224-f26f9409b101/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260319171110-e3a33c96fb44/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= diff --git a/gotohelm/go.mod b/gotohelm/go.mod index 869615bf1..661fb0603 100644 --- a/gotohelm/go.mod +++ b/gotohelm/go.mod @@ -171,14 +171,14 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.6.8 // indirect go.etcd.io/etcd/client/v3 v3.6.8 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/contrib/bridges/prometheus v0.61.0 // indirect + go.opentelemetry.io/contrib/bridges/prometheus v0.65.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0 // indirect go.opentelemetry.io/otel v1.43.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.16.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.16.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.40.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.40.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 // indirect go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.36.0 // indirect diff --git a/gotohelm/go.sum b/gotohelm/go.sum index 63a82acbd..b4b2e26ea 100644 --- a/gotohelm/go.sum +++ b/gotohelm/go.sum @@ -480,8 +480,8 @@ go.etcd.io/raft/v3 v3.6.0 h1:5NtvbDVYpnfZWcIHgGRk9DyzkBIXOi8j+DDp1IcnUWQ= go.etcd.io/raft/v3 v3.6.0/go.mod h1:nLvLevg6+xrVtHUmVaTcTz603gQPHfh7kUAwV6YpfGo= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= -go.opentelemetry.io/contrib/bridges/prometheus v0.61.0 h1:RyrtJzu5MAmIcbRrwg75b+w3RlZCP0vJByDVzcpAe3M= -go.opentelemetry.io/contrib/bridges/prometheus v0.61.0/go.mod h1:tirr4p9NXbzjlbruiRGp53IzlYrDk5CO2fdHj0sSSaY= +go.opentelemetry.io/contrib/bridges/prometheus v0.65.0 h1:I/7S/yWobR3QHFLqHsJ8QOndoiFsj1VgHpQiq43KlUI= +go.opentelemetry.io/contrib/bridges/prometheus v0.65.0/go.mod h1:jPF6gn3y1E+nozCAEQj3c6NZ8KY+tvAgSVfvoOJUFac= go.opentelemetry.io/contrib/exporters/autoexport v0.57.0 h1:jmTVJ86dP60C01K3slFQa2NQ/Aoi7zA+wy7vMOKD9H4= go.opentelemetry.io/contrib/exporters/autoexport v0.57.0/go.mod h1:EJBheUMttD/lABFyLXhce47Wr6DPWYReCzaZiXadH7g= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= @@ -490,14 +490,14 @@ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0 h1:7iP2uCb go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0/go.mod h1:c7hN3ddxs/z6q9xwvfLPk+UHlWRQyaeR1LdgfL/66l0= go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0 h1:HMUytBT3uGhPKYY/u/G5MR9itrlSO2SMOsSD3Tk3k7A= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0/go.mod h1:hdDXsiNLmdW/9BF2jQpnHHlhFajpWCEYfM6e5m2OAZg= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0 h1:C/Wi2F8wEmbxJ9Kuzw/nhP+Z9XaHYMkyDmXy6yR2cjw= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0/go.mod h1:0Lr9vmGKzadCTgsiBydxr6GEZ8SsZ7Ks53LzjWG5Ar4= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 h1:vl9obrcoWVKp/lwl8tRE33853I8Xru9HFbw/skNeLs8= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0/go.mod h1:GAXRxmLJcVM3u22IjTg74zWBrRCKq8BnOqUVLodpcpw= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0 h1:Oe2z/BCg5q7k4iXC3cqJxKYg0ieRiOqF0cecFYdPTwk= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0/go.mod h1:ZQM5lAJpOsKnYagGg/zV2krVqTtaVdYdDkhMoX6Oalg= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.16.0 h1:ZVg+kCXxd9LtAaQNKBxAvJ5NpMf7LpvEr4MIZqb0TMQ= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.16.0/go.mod h1:hh0tMeZ75CCXrHd9OXRYxTlCAdxcXioWHFIpYw2rZu8= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.16.0 h1:djrxvDxAe44mJUrKataUbOhCKhR3F8QCyWucO16hTQs= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.16.0/go.mod h1:dt3nxpQEiSoKvfTVxp3TUg5fHPLhKtbcnN3Z1I1ePD0= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.40.0 h1:NOyNnS19BF2SUDApbOKbDtWZ0IK7b8FJ2uAGdIWOGb0= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.40.0/go.mod h1:VL6EgVikRLcJa9ftukrHu/ZkkhFBSo1lzvdBC9CF1ss= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.40.0 h1:9y5sHvAxWzft1WQ4BwqcvA+IFVUJ1Ya75mSAUnFEVwE= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.40.0/go.mod h1:eQqT90eR3X5Dbs1g9YSM30RavwLF725Ris5/XSXWvqE= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 h1:QKdN8ly8zEMrByybbQgv8cWBcdAarwmIPZ6FThrWXJs= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0/go.mod h1:bTdK1nhqF76qiPoCCdyFIV+N/sRHYXYCTQc+3VCi3MI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 h1:DvJDOPmSWQHWywQS6lKL+pb8s3gBLOZUtw4N+mavW1I= diff --git a/harpoon/go.mod b/harpoon/go.mod index 22a80c016..69ea256ee 100644 --- a/harpoon/go.mod +++ b/harpoon/go.mod @@ -141,7 +141,7 @@ require ( github.com/prometheus/common v0.67.5 // indirect github.com/prometheus/procfs v0.19.2 // indirect github.com/redpanda-data/common-go/goldenfile v0.0.0-20260109170727-1dd9f5d22ee1 // indirect - github.com/redpanda-data/common-go/otelutil v0.0.0-20260109170727-1dd9f5d22ee1 // indirect + github.com/redpanda-data/common-go/otelutil v0.0.0-20260413160920-df1679f86269 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect github.com/rubenv/sql-migrate v1.8.0 // indirect diff --git a/harpoon/go.sum b/harpoon/go.sum index 67dc86d1a..cb65e7a7d 100644 --- a/harpoon/go.sum +++ b/harpoon/go.sum @@ -411,8 +411,8 @@ github.com/redpanda-data/common-go/goldenfile v0.0.0-20260109170727-1dd9f5d22ee1 github.com/redpanda-data/common-go/goldenfile v0.0.0-20260109170727-1dd9f5d22ee1/go.mod h1:V3OBV2kcF/BDDytUZuKvIygbaXoGPT5VO3KmMAz+mBM= github.com/redpanda-data/common-go/kube v0.0.0-20260408144400-efba9928bb27 h1:735zfoMDegKzXO+mipLeEJhjvoboMiOwlZiEfWTs9IY= github.com/redpanda-data/common-go/kube v0.0.0-20260408144400-efba9928bb27/go.mod h1:87/jKBvBse9m7PBwCxzISdxOpHblNKTqxZZNa1U1utM= -github.com/redpanda-data/common-go/otelutil v0.0.0-20260109170727-1dd9f5d22ee1 h1:fLBU7IJZq8PR88AkEdI5G+yyBsftionGapvAOMPW9hg= -github.com/redpanda-data/common-go/otelutil v0.0.0-20260109170727-1dd9f5d22ee1/go.mod h1:LzztzYWpD+e+A6hV6+eQhYY60zHQR7ePxhLgyMmRn/Q= +github.com/redpanda-data/common-go/otelutil v0.0.0-20260413160920-df1679f86269 h1:tEFqrnhUNN08Ye6n1FxtFHqkrFRhA0PGs2917v4JAOk= +github.com/redpanda-data/common-go/otelutil v0.0.0-20260413160920-df1679f86269/go.mod h1:/Ae7wJ1CFtjgvfmQ2QlMwdNNFQISUSeST3mlmJMuG3s= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= @@ -501,8 +501,8 @@ go.etcd.io/raft/v3 v3.6.0 h1:5NtvbDVYpnfZWcIHgGRk9DyzkBIXOi8j+DDp1IcnUWQ= go.etcd.io/raft/v3 v3.6.0/go.mod h1:nLvLevg6+xrVtHUmVaTcTz603gQPHfh7kUAwV6YpfGo= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= -go.opentelemetry.io/contrib/bridges/prometheus v0.61.0 h1:RyrtJzu5MAmIcbRrwg75b+w3RlZCP0vJByDVzcpAe3M= -go.opentelemetry.io/contrib/bridges/prometheus v0.61.0/go.mod h1:tirr4p9NXbzjlbruiRGp53IzlYrDk5CO2fdHj0sSSaY= +go.opentelemetry.io/contrib/bridges/prometheus v0.65.0 h1:I/7S/yWobR3QHFLqHsJ8QOndoiFsj1VgHpQiq43KlUI= +go.opentelemetry.io/contrib/bridges/prometheus v0.65.0/go.mod h1:jPF6gn3y1E+nozCAEQj3c6NZ8KY+tvAgSVfvoOJUFac= go.opentelemetry.io/contrib/exporters/autoexport v0.57.0 h1:jmTVJ86dP60C01K3slFQa2NQ/Aoi7zA+wy7vMOKD9H4= go.opentelemetry.io/contrib/exporters/autoexport v0.57.0/go.mod h1:EJBheUMttD/lABFyLXhce47Wr6DPWYReCzaZiXadH7g= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= @@ -511,14 +511,14 @@ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0 h1:7iP2uCb go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0/go.mod h1:c7hN3ddxs/z6q9xwvfLPk+UHlWRQyaeR1LdgfL/66l0= go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0 h1:HMUytBT3uGhPKYY/u/G5MR9itrlSO2SMOsSD3Tk3k7A= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0/go.mod h1:hdDXsiNLmdW/9BF2jQpnHHlhFajpWCEYfM6e5m2OAZg= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0 h1:C/Wi2F8wEmbxJ9Kuzw/nhP+Z9XaHYMkyDmXy6yR2cjw= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0/go.mod h1:0Lr9vmGKzadCTgsiBydxr6GEZ8SsZ7Ks53LzjWG5Ar4= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 h1:vl9obrcoWVKp/lwl8tRE33853I8Xru9HFbw/skNeLs8= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0/go.mod h1:GAXRxmLJcVM3u22IjTg74zWBrRCKq8BnOqUVLodpcpw= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0 h1:Oe2z/BCg5q7k4iXC3cqJxKYg0ieRiOqF0cecFYdPTwk= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0/go.mod h1:ZQM5lAJpOsKnYagGg/zV2krVqTtaVdYdDkhMoX6Oalg= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.16.0 h1:ZVg+kCXxd9LtAaQNKBxAvJ5NpMf7LpvEr4MIZqb0TMQ= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.16.0/go.mod h1:hh0tMeZ75CCXrHd9OXRYxTlCAdxcXioWHFIpYw2rZu8= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.16.0 h1:djrxvDxAe44mJUrKataUbOhCKhR3F8QCyWucO16hTQs= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.16.0/go.mod h1:dt3nxpQEiSoKvfTVxp3TUg5fHPLhKtbcnN3Z1I1ePD0= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.40.0 h1:NOyNnS19BF2SUDApbOKbDtWZ0IK7b8FJ2uAGdIWOGb0= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.40.0/go.mod h1:VL6EgVikRLcJa9ftukrHu/ZkkhFBSo1lzvdBC9CF1ss= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.40.0 h1:9y5sHvAxWzft1WQ4BwqcvA+IFVUJ1Ya75mSAUnFEVwE= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.40.0/go.mod h1:eQqT90eR3X5Dbs1g9YSM30RavwLF725Ris5/XSXWvqE= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 h1:QKdN8ly8zEMrByybbQgv8cWBcdAarwmIPZ6FThrWXJs= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0/go.mod h1:bTdK1nhqF76qiPoCCdyFIV+N/sRHYXYCTQc+3VCi3MI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 h1:DvJDOPmSWQHWywQS6lKL+pb8s3gBLOZUtw4N+mavW1I= diff --git a/operator/go.mod b/operator/go.mod index 478810aeb..d18f1910c 100644 --- a/operator/go.mod +++ b/operator/go.mod @@ -26,7 +26,7 @@ require ( github.com/redpanda-data/common-go/kube v0.0.0-20260408144400-efba9928bb27 github.com/redpanda-data/common-go/license v0.0.0-20260120073450-935d3dd3d6c1 github.com/redpanda-data/common-go/net v0.1.1-0.20240429123545-4da3d2b371f7 - github.com/redpanda-data/common-go/otelutil v0.0.0-20260109170727-1dd9f5d22ee1 + github.com/redpanda-data/common-go/otelutil v0.0.0-20260413160920-df1679f86269 github.com/redpanda-data/common-go/rp-controller-utils v0.0.0-20260109170727-1dd9f5d22ee1 github.com/redpanda-data/common-go/rpadmin v0.2.4 github.com/redpanda-data/common-go/rpsr v0.1.4 @@ -204,6 +204,7 @@ require ( github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect + github.com/hashicorp/go-version v1.8.0 // indirect github.com/homeport/dyff v1.7.1 // indirect github.com/huandu/xstrings v1.5.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect @@ -310,14 +311,15 @@ require ( go.etcd.io/etcd/client/v3 v3.6.8 // indirect go.etcd.io/raft/v3 v3.6.0 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/collector/pdata v1.32.0 // indirect - go.opentelemetry.io/contrib/bridges/prometheus v0.61.0 // indirect + go.opentelemetry.io/collector/featuregate v1.52.0 // indirect + go.opentelemetry.io/collector/pdata v1.52.0 // indirect + go.opentelemetry.io/contrib/bridges/prometheus v0.65.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.16.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.16.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.40.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.40.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 // indirect go.opentelemetry.io/otel/log v0.16.0 // indirect diff --git a/operator/go.sum b/operator/go.sum index fa5ac0a65..d50baa418 100644 --- a/operator/go.sum +++ b/operator/go.sum @@ -374,6 +374,8 @@ github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9 github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.8.0 h1:KAkNb1HAiZd1ukkxDFGmokVZe1Xy9HG6NUp+bPle2i4= +github.com/hashicorp/go-version v1.8.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru/arc/v2 v2.0.7 h1:QxkVTxwColcduO+LP7eJO56r2hFiG8zEbfAAzRv52KQ= github.com/hashicorp/golang-lru/arc/v2 v2.0.7/go.mod h1:Pe7gBlGdc8clY5LJ0LpJXMt5AmgmWNH1g+oFFVUHOEc= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= @@ -606,8 +608,8 @@ github.com/redpanda-data/common-go/license v0.0.0-20260120073450-935d3dd3d6c1 h1 github.com/redpanda-data/common-go/license v0.0.0-20260120073450-935d3dd3d6c1/go.mod h1:F1fp8xVNS2UwWFosOjJ9+5jaEZnXSjB9AdHk2R9XlpI= github.com/redpanda-data/common-go/net v0.1.1-0.20240429123545-4da3d2b371f7 h1:MXLdjFdFjOtyuUR4TdVVsqFP8xnru2YDwzH9bJTUr1M= github.com/redpanda-data/common-go/net v0.1.1-0.20240429123545-4da3d2b371f7/go.mod h1:UJIi/yUxGOBYXUrfUsOkxfYxcb/ll7mZrwae/i+U2kc= -github.com/redpanda-data/common-go/otelutil v0.0.0-20260109170727-1dd9f5d22ee1 h1:fLBU7IJZq8PR88AkEdI5G+yyBsftionGapvAOMPW9hg= -github.com/redpanda-data/common-go/otelutil v0.0.0-20260109170727-1dd9f5d22ee1/go.mod h1:LzztzYWpD+e+A6hV6+eQhYY60zHQR7ePxhLgyMmRn/Q= +github.com/redpanda-data/common-go/otelutil v0.0.0-20260413160920-df1679f86269 h1:tEFqrnhUNN08Ye6n1FxtFHqkrFRhA0PGs2917v4JAOk= +github.com/redpanda-data/common-go/otelutil v0.0.0-20260413160920-df1679f86269/go.mod h1:/Ae7wJ1CFtjgvfmQ2QlMwdNNFQISUSeST3mlmJMuG3s= github.com/redpanda-data/common-go/rp-controller-utils v0.0.0-20260109170727-1dd9f5d22ee1 h1:pGPp5rJjnFM2z3JhuHSq099tltYjSf7bZT44zWQfovY= github.com/redpanda-data/common-go/rp-controller-utils v0.0.0-20260109170727-1dd9f5d22ee1/go.mod h1:y+TN+dzE/I/CnBIQesZ51SlixR3shI6QNhdZ55E0Yu8= github.com/redpanda-data/common-go/rpadmin v0.2.4 h1:XM7kfhKokWeLATX4dnLXczjd4sxN2AcJll/KRvE15iA= @@ -742,10 +744,14 @@ go.etcd.io/raft/v3 v3.6.0 h1:5NtvbDVYpnfZWcIHgGRk9DyzkBIXOi8j+DDp1IcnUWQ= go.etcd.io/raft/v3 v3.6.0/go.mod h1:nLvLevg6+xrVtHUmVaTcTz603gQPHfh7kUAwV6YpfGo= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= -go.opentelemetry.io/collector/pdata v1.32.0 h1:hBzlJV1rujr1UdD2CBy2gmaIKtC15ysg/z+x8F3McQA= -go.opentelemetry.io/collector/pdata v1.32.0/go.mod h1:m41io9nWpy7aCm/uD1L9QcKiZwOP0ldj83JEA34dmlk= -go.opentelemetry.io/contrib/bridges/prometheus v0.61.0 h1:RyrtJzu5MAmIcbRrwg75b+w3RlZCP0vJByDVzcpAe3M= -go.opentelemetry.io/contrib/bridges/prometheus v0.61.0/go.mod h1:tirr4p9NXbzjlbruiRGp53IzlYrDk5CO2fdHj0sSSaY= +go.opentelemetry.io/collector/featuregate v1.52.0 h1:Ba/6lL8BY+wWbQ8w7aOWzbyl4WG8i8eSGl2fnrBHBnE= +go.opentelemetry.io/collector/featuregate v1.52.0/go.mod h1:PS7zY/zaCb28EqciePVwRHVhc3oKortTFXsi3I6ee4g= +go.opentelemetry.io/collector/internal/testutil v0.146.1 h1:hpemuw5sLSYIqflJdScFikLhCjHxKuJWC2Lwyh9yeCI= +go.opentelemetry.io/collector/internal/testutil v0.146.1/go.mod h1:Jkjs6rkqs973LqgZ0Fe3zrokQRKULYXPIf4HuqStiEE= +go.opentelemetry.io/collector/pdata v1.52.0 h1:jp76qKVZsQqB6yK2C6bolPOi1uU+jhsTDsp71d5MOhk= +go.opentelemetry.io/collector/pdata v1.52.0/go.mod h1:+w6A2FXrMDDIwjRgQaud11Ifobng/j/FW3upZtaVKHc= +go.opentelemetry.io/contrib/bridges/prometheus v0.65.0 h1:I/7S/yWobR3QHFLqHsJ8QOndoiFsj1VgHpQiq43KlUI= +go.opentelemetry.io/contrib/bridges/prometheus v0.65.0/go.mod h1:jPF6gn3y1E+nozCAEQj3c6NZ8KY+tvAgSVfvoOJUFac= go.opentelemetry.io/contrib/exporters/autoexport v0.57.0 h1:jmTVJ86dP60C01K3slFQa2NQ/Aoi7zA+wy7vMOKD9H4= go.opentelemetry.io/contrib/exporters/autoexport v0.57.0/go.mod h1:EJBheUMttD/lABFyLXhce47Wr6DPWYReCzaZiXadH7g= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= @@ -754,14 +760,14 @@ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0 h1:7iP2uCb go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0/go.mod h1:c7hN3ddxs/z6q9xwvfLPk+UHlWRQyaeR1LdgfL/66l0= go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0 h1:HMUytBT3uGhPKYY/u/G5MR9itrlSO2SMOsSD3Tk3k7A= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0/go.mod h1:hdDXsiNLmdW/9BF2jQpnHHlhFajpWCEYfM6e5m2OAZg= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0 h1:C/Wi2F8wEmbxJ9Kuzw/nhP+Z9XaHYMkyDmXy6yR2cjw= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0/go.mod h1:0Lr9vmGKzadCTgsiBydxr6GEZ8SsZ7Ks53LzjWG5Ar4= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 h1:vl9obrcoWVKp/lwl8tRE33853I8Xru9HFbw/skNeLs8= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0/go.mod h1:GAXRxmLJcVM3u22IjTg74zWBrRCKq8BnOqUVLodpcpw= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0 h1:Oe2z/BCg5q7k4iXC3cqJxKYg0ieRiOqF0cecFYdPTwk= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0/go.mod h1:ZQM5lAJpOsKnYagGg/zV2krVqTtaVdYdDkhMoX6Oalg= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.16.0 h1:ZVg+kCXxd9LtAaQNKBxAvJ5NpMf7LpvEr4MIZqb0TMQ= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.16.0/go.mod h1:hh0tMeZ75CCXrHd9OXRYxTlCAdxcXioWHFIpYw2rZu8= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.16.0 h1:djrxvDxAe44mJUrKataUbOhCKhR3F8QCyWucO16hTQs= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.16.0/go.mod h1:dt3nxpQEiSoKvfTVxp3TUg5fHPLhKtbcnN3Z1I1ePD0= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.40.0 h1:NOyNnS19BF2SUDApbOKbDtWZ0IK7b8FJ2uAGdIWOGb0= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.40.0/go.mod h1:VL6EgVikRLcJa9ftukrHu/ZkkhFBSo1lzvdBC9CF1ss= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.40.0 h1:9y5sHvAxWzft1WQ4BwqcvA+IFVUJ1Ya75mSAUnFEVwE= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.40.0/go.mod h1:eQqT90eR3X5Dbs1g9YSM30RavwLF725Ris5/XSXWvqE= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 h1:QKdN8ly8zEMrByybbQgv8cWBcdAarwmIPZ6FThrWXJs= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0/go.mod h1:bTdK1nhqF76qiPoCCdyFIV+N/sRHYXYCTQc+3VCi3MI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 h1:DvJDOPmSWQHWywQS6lKL+pb8s3gBLOZUtw4N+mavW1I= @@ -792,6 +798,12 @@ go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09 go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A= go.opentelemetry.io/proto/otlp v1.9.0/go.mod h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4= +go.opentelemetry.io/proto/slim/otlp v1.9.0 h1:fPVMv8tP3TrsqlkH1HWYUpbCY9cAIemx184VGkS6vlE= +go.opentelemetry.io/proto/slim/otlp v1.9.0/go.mod h1:xXdeJJ90Gqyll+orzUkY4bOd2HECo5JofeoLpymVqdI= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.2.0 h1:o13nadWDNkH/quoDomDUClnQBpdQQ2Qqv0lQBjIXjE8= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.2.0/go.mod h1:Gyb6Xe7FTi/6xBHwMmngGoHqL0w29Y4eW8TGFzpefGA= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.2.0 h1:EiUYvtwu6PMrMHVjcPfnsG3v+ajPkbUeH+IL93+QYyk= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.2.0/go.mod h1:mUUHKFiN2SST3AhJ8XhJxEoeVW12oqfXog0Bo8W3Ec4= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= diff --git a/pkg/go.mod b/pkg/go.mod index f0e1cb175..704abb457 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -14,7 +14,7 @@ require ( github.com/lucasjones/reggen v0.0.0-20200904144131-37ba4fa293bb github.com/redpanda-data/common-go/goldenfile v0.0.0-20260109170727-1dd9f5d22ee1 github.com/redpanda-data/common-go/kube v0.0.0-20260408144400-efba9928bb27 - github.com/redpanda-data/common-go/otelutil v0.0.0-20260109170727-1dd9f5d22ee1 + github.com/redpanda-data/common-go/otelutil v0.0.0-20260413160920-df1679f86269 github.com/redpanda-data/common-go/rpadmin v0.2.4 github.com/redpanda-data/common-go/secrets v0.1.4 github.com/redpanda-data/console/backend v0.0.0-20260330203659-9db13eb40ef4 @@ -97,7 +97,6 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/buger/jsonparser v1.1.1 // indirect - github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chai2010/gettext-go v1.0.2 // indirect @@ -164,6 +163,7 @@ require ( github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect + github.com/hashicorp/go-version v1.8.0 // indirect github.com/hashicorp/golang-lru/arc/v2 v2.0.7 // indirect github.com/homeport/dyff v1.7.1 // indirect github.com/huandu/xstrings v1.5.0 // indirect @@ -248,15 +248,16 @@ require ( go.etcd.io/etcd/client/pkg/v3 v3.6.8 // indirect go.etcd.io/etcd/client/v3 v3.6.8 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/collector/pdata v1.32.0 // indirect - go.opentelemetry.io/contrib/bridges/prometheus v0.61.0 // indirect + go.opentelemetry.io/collector/featuregate v1.52.0 // indirect + go.opentelemetry.io/collector/pdata v1.52.0 // indirect + go.opentelemetry.io/contrib/bridges/prometheus v0.65.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0 // indirect go.opentelemetry.io/otel v1.43.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.16.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.16.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.40.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.40.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 // indirect go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.36.0 // indirect @@ -264,7 +265,6 @@ require ( go.opentelemetry.io/otel/metric v1.43.0 // indirect go.opentelemetry.io/otel/sdk v1.40.0 // indirect go.opentelemetry.io/otel/sdk/log v0.16.0 // indirect - go.opentelemetry.io/otel/sdk/log/logtest v0.16.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.40.0 // indirect go.opentelemetry.io/otel/trace v1.43.0 // indirect go.opentelemetry.io/proto/otlp v1.9.0 // indirect diff --git a/pkg/go.sum b/pkg/go.sum index 58c7713e8..849954d22 100644 --- a/pkg/go.sum +++ b/pkg/go.sum @@ -344,6 +344,8 @@ github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9 github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.8.0 h1:KAkNb1HAiZd1ukkxDFGmokVZe1Xy9HG6NUp+bPle2i4= +github.com/hashicorp/go-version v1.8.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru/arc/v2 v2.0.7 h1:QxkVTxwColcduO+LP7eJO56r2hFiG8zEbfAAzRv52KQ= github.com/hashicorp/golang-lru/arc/v2 v2.0.7/go.mod h1:Pe7gBlGdc8clY5LJ0LpJXMt5AmgmWNH1g+oFFVUHOEc= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= @@ -540,8 +542,8 @@ github.com/redpanda-data/common-go/kube v0.0.0-20260408144400-efba9928bb27 h1:73 github.com/redpanda-data/common-go/kube v0.0.0-20260408144400-efba9928bb27/go.mod h1:87/jKBvBse9m7PBwCxzISdxOpHblNKTqxZZNa1U1utM= github.com/redpanda-data/common-go/net v0.1.1-0.20240429123545-4da3d2b371f7 h1:MXLdjFdFjOtyuUR4TdVVsqFP8xnru2YDwzH9bJTUr1M= github.com/redpanda-data/common-go/net v0.1.1-0.20240429123545-4da3d2b371f7/go.mod h1:UJIi/yUxGOBYXUrfUsOkxfYxcb/ll7mZrwae/i+U2kc= -github.com/redpanda-data/common-go/otelutil v0.0.0-20260109170727-1dd9f5d22ee1 h1:fLBU7IJZq8PR88AkEdI5G+yyBsftionGapvAOMPW9hg= -github.com/redpanda-data/common-go/otelutil v0.0.0-20260109170727-1dd9f5d22ee1/go.mod h1:LzztzYWpD+e+A6hV6+eQhYY60zHQR7ePxhLgyMmRn/Q= +github.com/redpanda-data/common-go/otelutil v0.0.0-20260413160920-df1679f86269 h1:tEFqrnhUNN08Ye6n1FxtFHqkrFRhA0PGs2917v4JAOk= +github.com/redpanda-data/common-go/otelutil v0.0.0-20260413160920-df1679f86269/go.mod h1:/Ae7wJ1CFtjgvfmQ2QlMwdNNFQISUSeST3mlmJMuG3s= github.com/redpanda-data/common-go/rpadmin v0.2.4 h1:XM7kfhKokWeLATX4dnLXczjd4sxN2AcJll/KRvE15iA= github.com/redpanda-data/common-go/rpadmin v0.2.4/go.mod h1:uOAY10WXPtcDPU0aUdpkqHR+b1BqUvRhlvMf0vha73A= github.com/redpanda-data/common-go/secrets v0.1.4 h1:CGp3KolGnjcJvIafTwf7Hlj5ztLOJCjgkegRu7IAkSw= @@ -664,10 +666,14 @@ go.etcd.io/raft/v3 v3.6.0 h1:5NtvbDVYpnfZWcIHgGRk9DyzkBIXOi8j+DDp1IcnUWQ= go.etcd.io/raft/v3 v3.6.0/go.mod h1:nLvLevg6+xrVtHUmVaTcTz603gQPHfh7kUAwV6YpfGo= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= -go.opentelemetry.io/collector/pdata v1.32.0 h1:hBzlJV1rujr1UdD2CBy2gmaIKtC15ysg/z+x8F3McQA= -go.opentelemetry.io/collector/pdata v1.32.0/go.mod h1:m41io9nWpy7aCm/uD1L9QcKiZwOP0ldj83JEA34dmlk= -go.opentelemetry.io/contrib/bridges/prometheus v0.61.0 h1:RyrtJzu5MAmIcbRrwg75b+w3RlZCP0vJByDVzcpAe3M= -go.opentelemetry.io/contrib/bridges/prometheus v0.61.0/go.mod h1:tirr4p9NXbzjlbruiRGp53IzlYrDk5CO2fdHj0sSSaY= +go.opentelemetry.io/collector/featuregate v1.52.0 h1:Ba/6lL8BY+wWbQ8w7aOWzbyl4WG8i8eSGl2fnrBHBnE= +go.opentelemetry.io/collector/featuregate v1.52.0/go.mod h1:PS7zY/zaCb28EqciePVwRHVhc3oKortTFXsi3I6ee4g= +go.opentelemetry.io/collector/internal/testutil v0.146.1 h1:hpemuw5sLSYIqflJdScFikLhCjHxKuJWC2Lwyh9yeCI= +go.opentelemetry.io/collector/internal/testutil v0.146.1/go.mod h1:Jkjs6rkqs973LqgZ0Fe3zrokQRKULYXPIf4HuqStiEE= +go.opentelemetry.io/collector/pdata v1.52.0 h1:jp76qKVZsQqB6yK2C6bolPOi1uU+jhsTDsp71d5MOhk= +go.opentelemetry.io/collector/pdata v1.52.0/go.mod h1:+w6A2FXrMDDIwjRgQaud11Ifobng/j/FW3upZtaVKHc= +go.opentelemetry.io/contrib/bridges/prometheus v0.65.0 h1:I/7S/yWobR3QHFLqHsJ8QOndoiFsj1VgHpQiq43KlUI= +go.opentelemetry.io/contrib/bridges/prometheus v0.65.0/go.mod h1:jPF6gn3y1E+nozCAEQj3c6NZ8KY+tvAgSVfvoOJUFac= go.opentelemetry.io/contrib/exporters/autoexport v0.57.0 h1:jmTVJ86dP60C01K3slFQa2NQ/Aoi7zA+wy7vMOKD9H4= go.opentelemetry.io/contrib/exporters/autoexport v0.57.0/go.mod h1:EJBheUMttD/lABFyLXhce47Wr6DPWYReCzaZiXadH7g= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.65.0 h1:XmiuHzgJt067+a6kwyAzkhXooYVv3/TOw9cM2VfJgUM= @@ -676,14 +682,14 @@ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0 h1:7iP2uCb go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0/go.mod h1:c7hN3ddxs/z6q9xwvfLPk+UHlWRQyaeR1LdgfL/66l0= go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0 h1:HMUytBT3uGhPKYY/u/G5MR9itrlSO2SMOsSD3Tk3k7A= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.11.0/go.mod h1:hdDXsiNLmdW/9BF2jQpnHHlhFajpWCEYfM6e5m2OAZg= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0 h1:C/Wi2F8wEmbxJ9Kuzw/nhP+Z9XaHYMkyDmXy6yR2cjw= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.11.0/go.mod h1:0Lr9vmGKzadCTgsiBydxr6GEZ8SsZ7Ks53LzjWG5Ar4= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 h1:vl9obrcoWVKp/lwl8tRE33853I8Xru9HFbw/skNeLs8= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0/go.mod h1:GAXRxmLJcVM3u22IjTg74zWBrRCKq8BnOqUVLodpcpw= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0 h1:Oe2z/BCg5q7k4iXC3cqJxKYg0ieRiOqF0cecFYdPTwk= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.38.0/go.mod h1:ZQM5lAJpOsKnYagGg/zV2krVqTtaVdYdDkhMoX6Oalg= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.16.0 h1:ZVg+kCXxd9LtAaQNKBxAvJ5NpMf7LpvEr4MIZqb0TMQ= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.16.0/go.mod h1:hh0tMeZ75CCXrHd9OXRYxTlCAdxcXioWHFIpYw2rZu8= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.16.0 h1:djrxvDxAe44mJUrKataUbOhCKhR3F8QCyWucO16hTQs= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.16.0/go.mod h1:dt3nxpQEiSoKvfTVxp3TUg5fHPLhKtbcnN3Z1I1ePD0= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.40.0 h1:NOyNnS19BF2SUDApbOKbDtWZ0IK7b8FJ2uAGdIWOGb0= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.40.0/go.mod h1:VL6EgVikRLcJa9ftukrHu/ZkkhFBSo1lzvdBC9CF1ss= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.40.0 h1:9y5sHvAxWzft1WQ4BwqcvA+IFVUJ1Ya75mSAUnFEVwE= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.40.0/go.mod h1:eQqT90eR3X5Dbs1g9YSM30RavwLF725Ris5/XSXWvqE= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 h1:QKdN8ly8zEMrByybbQgv8cWBcdAarwmIPZ6FThrWXJs= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0/go.mod h1:bTdK1nhqF76qiPoCCdyFIV+N/sRHYXYCTQc+3VCi3MI= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 h1:DvJDOPmSWQHWywQS6lKL+pb8s3gBLOZUtw4N+mavW1I= @@ -714,6 +720,12 @@ go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09 go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A= go.opentelemetry.io/proto/otlp v1.9.0/go.mod h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4= +go.opentelemetry.io/proto/slim/otlp v1.9.0 h1:fPVMv8tP3TrsqlkH1HWYUpbCY9cAIemx184VGkS6vlE= +go.opentelemetry.io/proto/slim/otlp v1.9.0/go.mod h1:xXdeJJ90Gqyll+orzUkY4bOd2HECo5JofeoLpymVqdI= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.2.0 h1:o13nadWDNkH/quoDomDUClnQBpdQQ2Qqv0lQBjIXjE8= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.2.0/go.mod h1:Gyb6Xe7FTi/6xBHwMmngGoHqL0w29Y4eW8TGFzpefGA= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.2.0 h1:EiUYvtwu6PMrMHVjcPfnsG3v+ajPkbUeH+IL93+QYyk= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.2.0/go.mod h1:mUUHKFiN2SST3AhJ8XhJxEoeVW12oqfXog0Bo8W3Ec4= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= From 809d6789a7cbdde3bbd1b717cf08bd8dc7971727 Mon Sep 17 00:00:00 2001 From: Rafal Korepta Date: Mon, 13 Apr 2026 16:56:43 +0200 Subject: [PATCH 02/10] operator: Use global logger in multicluster command instead of local zap instance The multicluster entrypoint created its own zap logger with a dedicated --log-level flag for the raft subsystem, bypassing the global logger configured in PersistentPreRun. This meant: - The raft logger lacked the ContextFree wrapper, so context.Context values leaked into log output (the bug fixed in the prior commit). - Log level had to be set separately via --log-level, diverging from the operator-wide --log-level flag in the root command. Replace ctrl.LoggerFrom (controller-runtime) with log.FromContext (otelutil) so both the setup and raft loggers inherit the global logger's configuration, level, and ContextFree filtering. Remove the now-redundant parseLogLevel function and --log-level flag. --- operator/cmd/multicluster/multicluster.go | 37 +++-------------------- 1 file changed, 4 insertions(+), 33 deletions(-) diff --git a/operator/cmd/multicluster/multicluster.go b/operator/cmd/multicluster/multicluster.go index 5ecd82453..bd2ccae52 100644 --- a/operator/cmd/multicluster/multicluster.go +++ b/operator/cmd/multicluster/multicluster.go @@ -18,13 +18,12 @@ import ( "github.com/cockroachdb/errors" "github.com/redpanda-data/common-go/license" + "github.com/redpanda-data/common-go/otelutil/log" "github.com/spf13/cobra" - "go.uber.org/zap/zapcore" _ "k8s.io/client-go/plugin/pkg/client/auth" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/certwatcher" "sigs.k8s.io/controller-runtime/pkg/healthz" - ctrlzap "sigs.k8s.io/controller-runtime/pkg/log/zap" "sigs.k8s.io/controller-runtime/pkg/metrics/filters" metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server" "sigs.k8s.io/controller-runtime/pkg/webhook" @@ -60,7 +59,6 @@ type MulticlusterOptions struct { KubernetesAPIServer string KubeconfigNamespace string KubeconfigName string - LogLevel string BaseImage string BaseTag string HealthProbeBindAddress string @@ -141,23 +139,6 @@ func peerFromFlag(value string) (RaftCluster, error) { }, nil } -func parseLogLevel(level string) (zapcore.Level, error) { - switch level { - case "debug": - return zapcore.DebugLevel, nil - case "info": - return zapcore.InfoLevel, nil - case "warn", "warning": - return zapcore.WarnLevel, nil - case "error": - return zapcore.ErrorLevel, nil - case "fatal": - return zapcore.FatalLevel, nil - default: - return zapcore.InfoLevel, fmt.Errorf("unknown log level: %s, defaulting to info", level) - } -} - func (o *MulticlusterOptions) BindFlags(cmd *cobra.Command) { cmd.Flags().StringVar(&o.Name, "name", "", "raft node name") cmd.Flags().StringVar(&o.Address, "raft-address", "", "raft node address") @@ -170,7 +151,6 @@ func (o *MulticlusterOptions) BindFlags(cmd *cobra.Command) { cmd.Flags().StringVar(&o.KubernetesAPIServer, "kubernetes-api-address", "", "raft kubernetes api server address") cmd.Flags().StringVar(&o.KubeconfigNamespace, "kubeconfig-namespace", "default", "raft kubeconfig namespace") cmd.Flags().StringVar(&o.KubeconfigName, "kubeconfig-name", "multicluster-kubeconfig", "raft kubeconfig name") - cmd.Flags().StringVar(&o.LogLevel, "log-level", "info", "log level") cmd.Flags().StringVar(&o.WebhookCertPath, "webhook-cert-path", "", "path on disk to the webhook certificate, implies enabling webhooks") cmd.Flags().StringVar(&o.WebhookKeyPath, "webhook-key-path", "", "path on disk to the webhook certificate key, implies enabling webhooks") cmd.Flags().StringVar(&o.MetricsBindAddress, "metrics-bind-address", "", "address for binding metrics server") @@ -207,7 +187,7 @@ func Run( ctx context.Context, opts *MulticlusterOptions, ) error { - setupLog := ctrl.LoggerFrom(ctx).WithName("setup") + setupLog := log.FromContext(ctx).WithName("setup") if err := opts.validate(); err != nil { return err @@ -233,21 +213,12 @@ func Run( return err } - // Parse and configure log level - logLevel, err := parseLogLevel(opts.LogLevel) - if err != nil { - setupLog.Error(err, "failed to parse log level, using default") - } - - // Create a logger with the specified log level - raftLogger := ctrlzap.New(ctrlzap.Level(logLevel)).WithName("raft") - - config := multicluster.RaftConfiguration{ + config := &multicluster.RaftConfiguration{ Name: opts.Name, Address: opts.Address, ElectionTimeout: opts.ElectionTimeout, HeartbeatInterval: opts.HeartbeatInterval, - Logger: raftLogger, + Logger: log.FromContext(ctx).WithName("raft-runtime-manager"), RestConfig: k8sConfig, Meta: []byte("node-name=" + opts.Name), Scheme: controller.MulticlusterScheme, From 98dbd2c7ece313aa39c9c7c08755d2d440e266c6 Mon Sep 17 00:00:00 2001 From: Rafal Korepta Date: Mon, 13 Apr 2026 17:02:41 +0200 Subject: [PATCH 03/10] operator: Log canonical cluster names and reduce syncer verbosity The local cluster is represented internally as an empty string (mcmanager.LocalCluster). Log messages and object keys that included the raw cluster name printed it as an empty string, making it unclear which cluster a particular log line referred to. Propagate canonical cluster names (resolved via GetLocalClusterName) through MulticlusterStatefulSet, MulticlusterPod, ClusterNamespacedName, and the clusterObject interface so that logs always show the real cluster identity (e.g. "cluster-1") instead of "". Also refactor CanonicalClusterName to accept func() string instead of the full multicluster.Manager interface, and convert syncer log entries from Info to Debug/Trace level with structured key-value pairs instead of fmt.Sprintf messages. --- .../redpanda/multicluster_controller.go | 2 +- .../redpanda/nodepool_controller.go | 14 ++++-- operator/internal/lifecycle/client.go | 17 +++---- operator/internal/lifecycle/helpers.go | 3 +- operator/internal/lifecycle/helpers_test.go | 30 ++++++++---- operator/internal/lifecycle/pool.go | 46 +++++++++++++------ .../lifecycle/stretch_cluster_node_pools.go | 6 +-- .../stretch_cluster_simple_resources.go | 2 +- pkg/multicluster/raft.go | 16 +++---- 9 files changed, 86 insertions(+), 50 deletions(-) diff --git a/operator/internal/controller/redpanda/multicluster_controller.go b/operator/internal/controller/redpanda/multicluster_controller.go index d2a5b44b4..d4a1e6f9f 100644 --- a/operator/internal/controller/redpanda/multicluster_controller.go +++ b/operator/internal/controller/redpanda/multicluster_controller.go @@ -773,7 +773,7 @@ func (r *MulticlusterReconciler) reconcileDecommission(ctx context.Context, stat // at this point any set that needs to be deleted should have 0 replicas // so we can attempt to delete them all in one pass for _, set := range state.pools.ToDelete() { - logger.V(log.TraceLevel).Info("deleting StatefulSet", "StatefulSet", client.ObjectKeyFromObject(set).String(), "cluster", set.GetCluster()) + logger.V(log.TraceLevel).Info("deleting StatefulSet", "StatefulSet", client.ObjectKeyFromObject(set).String(), "cluster", set.GetCanonicalClusterName()) if err := r.LifecycleClient.DeleteStatefulSetForNodePool(ctx, set); err != nil { return ctrl.Result{}, errors.Wrap(err, "deleting statefulset") } diff --git a/operator/internal/controller/redpanda/nodepool_controller.go b/operator/internal/controller/redpanda/nodepool_controller.go index 19dc10858..4d0279d3c 100644 --- a/operator/internal/controller/redpanda/nodepool_controller.go +++ b/operator/internal/controller/redpanda/nodepool_controller.go @@ -54,7 +54,7 @@ type NodePoolReconciler struct { } func SetupWithMultiClusterManager(mgr multicluster.Manager) error { - mgr.GetLogger().WithName("SetupWithMultiClusterManager").Info("registering NodePool controller", "knownClusters", mgr.GetClusterNames()) + mgr.GetLogger().WithName("SetupWithMultiClusterManager").Info("registering NodePool controller", "knownClusters", createCanonicalClusterNameList(mgr)) return mcbuilder.ControllerManagedBy(mgr). For( &redpandav1alpha2.NodePool{}, @@ -64,7 +64,7 @@ func SetupWithMultiClusterManager(mgr multicluster.Manager) error { Watches(&redpandav1alpha2.StretchCluster{}, func(_ string, _ cluster.Cluster) mchandler.EventHandler { return mchandler.TypedEnqueueRequestsFromMapFuncWithClusterPreservation(func(ctx context.Context, object client.Object) []mcreconcile.Request { l := log.FromContext(ctx).WithName("NodePoolReconciler.StretchClusterWatch").V(log.TraceLevel) - l.Info("StretchCluster event received", "stretchCluster", client.ObjectKeyFromObject(object).String(), "knownClusters", mgr.GetClusterNames()) + l.Info("StretchCluster event received", "stretchCluster", client.ObjectKeyFromObject(object).String(), "knownClusters", createCanonicalClusterNameList(mgr)) var reqs []mcreconcile.Request for _, clusterName := range mgr.GetClusterNames() { k8sCluster, err := mgr.GetCluster(ctx, clusterName) @@ -79,7 +79,7 @@ func SetupWithMultiClusterManager(mgr multicluster.Manager) error { l.Error(err, "cannot list NodePools", "cluster", clusterName) continue } - l.Info("listed NodePools", "cluster", clusterName, "count", len(nodePools.Items)) + l.Info("listed NodePools", "cluster", lifecycle.CanonicalClusterName(clusterName, mgr.GetLocalClusterName), "count", len(nodePools.Items)) for _, pool := range nodePools.Items { l.Info("checking NodePool", "cluster", clusterName, "nodePool", pool.Name, "clusterRefName", pool.Spec.ClusterRef.Name, "isStretchCluster", pool.Spec.ClusterRef.IsStretchCluster()) if pool.Spec.ClusterRef.IsStretchCluster() && pool.Spec.ClusterRef.Name == object.GetName() { @@ -106,6 +106,14 @@ func SetupWithMultiClusterManager(mgr multicluster.Manager) error { ) } +func createCanonicalClusterNameList(mgr multicluster.Manager) []string { + var canonicalClusterList []string + for _, clusterName := range mgr.GetClusterNames() { + canonicalClusterList = append(canonicalClusterList, lifecycle.CanonicalClusterName(clusterName, mgr.GetLocalClusterName)) + } + return canonicalClusterList +} + // SetupWithManager sets up the controller with the Manager. func (r *NodePoolReconciler) SetupWithManager(ctx context.Context, mgr multicluster.Manager, namespace string) error { builder := mcbuilder.ControllerManagedBy(mgr). diff --git a/operator/internal/lifecycle/client.go b/operator/internal/lifecycle/client.go index 0a6efad70..b52356ec5 100644 --- a/operator/internal/lifecycle/client.go +++ b/operator/internal/lifecycle/client.go @@ -280,12 +280,12 @@ func (r *ResourceClient[T, U]) SyncAll(ctx context.Context, owner U) error { logger := log.FromContext(ctx).WithName("SyncAll") var canonicalClusterList []string for _, clusterName := range r.clusterList(owner) { - canonicalClusterList = append(canonicalClusterList, CanonicalClusterName(clusterName, r.manager)) + canonicalClusterList = append(canonicalClusterList, CanonicalClusterName(clusterName, r.manager.GetLocalClusterName)) } logger.V(log.DebugLevel).Info("syncing all clusters", "clusterList", canonicalClusterList) for _, clusterName := range r.clusterList(owner) { logger.V(log.TraceLevel).Info("syncer called", - "clusterName", CanonicalClusterName(clusterName, r.manager), + "clusterName", CanonicalClusterName(clusterName, r.manager.GetLocalClusterName), "ownerName", owner.GetName(), "ownerUID", owner.GetUID(), "ownerGroupVersionKind", owner.GetObjectKind().GroupVersionKind().String()) @@ -320,7 +320,7 @@ func (r *ResourceClient[T, U]) FetchExistingAndDesiredPools(ctx context.Context, wrapped := []*MulticlusterStatefulSet{} for _, set := range desired { - wrapped = append(wrapped, &MulticlusterStatefulSet{StatefulSet: set, clusterName: clusterName}) + wrapped = append(wrapped, &MulticlusterStatefulSet{StatefulSet: set, clusterName: clusterName, canonicalClusterName: CanonicalClusterName(clusterName, r.manager.GetLocalClusterName)}) } // ensure we have and OnDelete type for our statefulset @@ -335,8 +335,8 @@ func (r *ResourceClient[T, U]) FetchExistingAndDesiredPools(ctx context.Context, set.Spec.Template.Labels = setConfigVersionLabels(set.Spec.Template.Labels, configVersion) } } - logger.V(log.DebugLevel).Info(fmt.Sprintf("found [%d] existing pools in cluster %s", len(existingPools), clusterName)) - logger.V(log.DebugLevel).Info(fmt.Sprintf("found [%d] desired pools in cluster %s", len(wrapped), clusterName)) + logger.V(log.DebugLevel).Info(fmt.Sprintf("found [%d] existing pools in cluster %s", len(existingPools), CanonicalClusterName(clusterName, r.manager.GetLocalClusterName))) + logger.V(log.DebugLevel).Info(fmt.Sprintf("found [%d] desired pools in cluster %s", len(wrapped), CanonicalClusterName(clusterName, r.manager.GetLocalClusterName))) pools.addExisting(existingPools...) pools.addDesired(wrapped...) @@ -604,8 +604,9 @@ func (r *ResourceClient[T, U]) fetchExistingPools(ctx context.Context, cluster U existing = append(existing, &poolWithOrdinals{ set: &MulticlusterStatefulSet{ - StatefulSet: &statefulSet, - clusterName: clusterName, + StatefulSet: &statefulSet, + clusterName: clusterName, + canonicalClusterName: CanonicalClusterName(clusterName, r.manager.GetLocalClusterName), }, revisions: sortRevisions(ownedRevisions), pods: withOrdinals, @@ -631,7 +632,7 @@ func (r *ResourceClient[T, U]) FetchExistingNodePoolsFromAllClusters(ctx context clusterRef := pool.Spec.ClusterRef if clusterRef.IsStretchCluster() && clusterRef.Name == cluster.GetName() { nodePools = append(nodePools, &NodePoolInCluster{ - cluster: CanonicalClusterName(clusterName, r.manager), + cluster: CanonicalClusterName(clusterName, r.manager.GetLocalClusterName), nodePool: pool.DeepCopy(), }) } diff --git a/operator/internal/lifecycle/helpers.go b/operator/internal/lifecycle/helpers.go index 23426acc4..e7560c2e0 100644 --- a/operator/internal/lifecycle/helpers.go +++ b/operator/internal/lifecycle/helpers.go @@ -115,10 +115,11 @@ type clusterObject interface { GetNamespace() string GetName() string GetCluster() string + GetCanonicalClusterName() string } func clusterObjectKey(o clusterObject) string { - return fmt.Sprintf("%s/%s/%s", o.GetCluster(), o.GetNamespace(), o.GetName()) + return fmt.Sprintf("%s/%s/%s", o.GetCanonicalClusterName(), o.GetNamespace(), o.GetName()) } // sortByNameAndCluster sorts a generic list of client.Objects by the combination diff --git a/operator/internal/lifecycle/helpers_test.go b/operator/internal/lifecycle/helpers_test.go index d4c6804b1..1a7269571 100644 --- a/operator/internal/lifecycle/helpers_test.go +++ b/operator/internal/lifecycle/helpers_test.go @@ -145,7 +145,8 @@ func TestSortByName(t *testing.T) { expected: []string{"cluster-a/namespace-1/pod-1", "cluster-a/namespace-1/pod-2", "cluster-a/namespace-2/pod-1", "cluster-a/namespace-2/pod-2", "cluster-b/namespace-1/pod-1"}, items: []*MulticlusterPod{ { - clusterName: "cluster-a", + canonicalClusterName: "cluster-a", + clusterName: "cluster-a", Pod: &corev1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "pod-1", @@ -154,7 +155,8 @@ func TestSortByName(t *testing.T) { }, }, { - clusterName: "cluster-a", + canonicalClusterName: "cluster-a", + clusterName: "cluster-a", Pod: &corev1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "pod-2", @@ -163,7 +165,8 @@ func TestSortByName(t *testing.T) { }, }, { - clusterName: "cluster-a", + canonicalClusterName: "cluster-a", + clusterName: "cluster-a", Pod: &corev1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "pod-1", @@ -172,7 +175,8 @@ func TestSortByName(t *testing.T) { }, }, { - clusterName: "cluster-a", + canonicalClusterName: "cluster-a", + clusterName: "cluster-a", Pod: &corev1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "pod-2", @@ -181,7 +185,8 @@ func TestSortByName(t *testing.T) { }, }, { - clusterName: "cluster-b", + canonicalClusterName: "cluster-b", + clusterName: "cluster-b", Pod: &corev1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "pod-1", @@ -195,7 +200,8 @@ func TestSortByName(t *testing.T) { expected: []string{"cluster-a/namespace-1/pod-1", "cluster-a/namespace-1/pod-2", "cluster-a/namespace-2/pod-1", "cluster-a/namespace-2/pod-2", "cluster-b/namespace-1/pod-1"}, items: []*MulticlusterPod{ { - clusterName: "cluster-a", + canonicalClusterName: "cluster-a", + clusterName: "cluster-a", Pod: &corev1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "pod-2", @@ -204,7 +210,8 @@ func TestSortByName(t *testing.T) { }, }, { - clusterName: "cluster-a", + canonicalClusterName: "cluster-a", + clusterName: "cluster-a", Pod: &corev1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "pod-1", @@ -213,7 +220,8 @@ func TestSortByName(t *testing.T) { }, }, { - clusterName: "cluster-b", + canonicalClusterName: "cluster-b", + clusterName: "cluster-b", Pod: &corev1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "pod-1", @@ -222,7 +230,8 @@ func TestSortByName(t *testing.T) { }, }, { - clusterName: "cluster-a", + canonicalClusterName: "cluster-a", + clusterName: "cluster-a", Pod: &corev1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "pod-2", @@ -231,7 +240,8 @@ func TestSortByName(t *testing.T) { }, }, { - clusterName: "cluster-a", + canonicalClusterName: "cluster-a", + clusterName: "cluster-a", Pod: &corev1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "pod-1", diff --git a/operator/internal/lifecycle/pool.go b/operator/internal/lifecycle/pool.go index f1eaa409a..4eec5b68c 100644 --- a/operator/internal/lifecycle/pool.go +++ b/operator/internal/lifecycle/pool.go @@ -22,22 +22,32 @@ import ( type MulticlusterStatefulSet struct { *appsv1.StatefulSet - clusterName string + clusterName string + canonicalClusterName string } func (s *MulticlusterStatefulSet) GetCluster() string { return s.clusterName } +func (s *MulticlusterStatefulSet) GetCanonicalClusterName() string { + return s.canonicalClusterName +} + type MulticlusterPod struct { *corev1.Pod - clusterName string + clusterName string + canonicalClusterName string } func (p *MulticlusterPod) GetCluster() string { return p.clusterName } +func (p *MulticlusterPod) GetCanonicalClusterName() string { + return p.canonicalClusterName +} + // podWithOrdinals is a container for sorting pods // by their ordinals type podsWithOrdinals struct { @@ -73,21 +83,27 @@ func (s *ScaleDownSet) GetName() string { return s.LastPod.Name } +func (s *ScaleDownSet) GetCanonicalClusterName() string { + return s.StatefulSet.canonicalClusterName +} + type ClusterNamespacedName struct { - Cluster string - Namespace string - Name string + Cluster string + Namespace string + Name string + CanonicalClusterName string } func (c ClusterNamespacedName) String() string { - return fmt.Sprintf("%s/%s/%s", c.Cluster, c.Namespace, c.Name) + return fmt.Sprintf("%s/%s/%s", c.CanonicalClusterName, c.Namespace, c.Name) } func objectKeyFromObject(o clusterObject) ClusterNamespacedName { return ClusterNamespacedName{ - Cluster: o.GetCluster(), - Namespace: o.GetNamespace(), - Name: o.GetName(), + Cluster: o.GetCluster(), + Namespace: o.GetNamespace(), + Name: o.GetName(), + CanonicalClusterName: o.GetCanonicalClusterName(), } } @@ -227,7 +243,7 @@ func (p *PoolTracker) ToCreate() []*MulticlusterStatefulSet { set.Labels = map[string]string{} } set.Labels[generationLabel] = generation - sets = append(sets, &MulticlusterStatefulSet{StatefulSet: set, clusterName: mcset.clusterName}) + sets = append(sets, &MulticlusterStatefulSet{StatefulSet: set, clusterName: mcset.clusterName, canonicalClusterName: mcset.canonicalClusterName}) } } @@ -253,7 +269,7 @@ func (p *PoolTracker) ToScaleUp() []*MulticlusterStatefulSet { set.Labels = map[string]string{} } set.Labels[generationLabel] = generation - sets = append(sets, &MulticlusterStatefulSet{StatefulSet: set, clusterName: mcset.clusterName}) + sets = append(sets, &MulticlusterStatefulSet{StatefulSet: set, clusterName: mcset.clusterName, canonicalClusterName: mcset.canonicalClusterName}) } } } @@ -295,7 +311,7 @@ func (p *PoolTracker) RequiresUpdate() []*MulticlusterStatefulSet { set.Labels = map[string]string{} } set.Labels[generationLabel] = generation - sets = append(sets, &MulticlusterStatefulSet{StatefulSet: set, clusterName: mcset.clusterName}) + sets = append(sets, &MulticlusterStatefulSet{StatefulSet: set, clusterName: mcset.clusterName, canonicalClusterName: mcset.canonicalClusterName}) } } } @@ -327,7 +343,7 @@ func (p *PoolTracker) ToScaleDown() []*ScaleDownSet { set.Spec.Replicas = ptr.To(existingReplicas - 1) sets = append(sets, &ScaleDownSet{ - StatefulSet: &MulticlusterStatefulSet{StatefulSet: set, clusterName: mcset.clusterName}, + StatefulSet: &MulticlusterStatefulSet{StatefulSet: set, clusterName: mcset.clusterName, canonicalClusterName: mcset.canonicalClusterName}, LastPod: lastPod.pod.DeepCopy(), }) } @@ -347,7 +363,7 @@ func (p *PoolTracker) ToScaleDown() []*ScaleDownSet { set.Spec.Replicas = ptr.To(existingReplicas - 1) sets = append(sets, &ScaleDownSet{ - StatefulSet: &MulticlusterStatefulSet{StatefulSet: set, clusterName: mcset.clusterName}, + StatefulSet: &MulticlusterStatefulSet{StatefulSet: set, clusterName: mcset.clusterName, canonicalClusterName: mcset.canonicalClusterName}, LastPod: lastPod.pod.DeepCopy(), }) } @@ -371,7 +387,7 @@ func (p *PoolTracker) ToDelete() []*MulticlusterStatefulSet { // }) mcset := p.existingPools[nn].set - sets = append(sets, &MulticlusterStatefulSet{StatefulSet: mcset.DeepCopy(), clusterName: mcset.clusterName}) + sets = append(sets, &MulticlusterStatefulSet{StatefulSet: mcset.DeepCopy(), clusterName: mcset.clusterName, canonicalClusterName: mcset.canonicalClusterName}) } } } diff --git a/operator/internal/lifecycle/stretch_cluster_node_pools.go b/operator/internal/lifecycle/stretch_cluster_node_pools.go index bceae3124..7b9c5b2f0 100644 --- a/operator/internal/lifecycle/stretch_cluster_node_pools.go +++ b/operator/internal/lifecycle/stretch_cluster_node_pools.go @@ -50,7 +50,7 @@ func (m *StretchNodePoolRenderer) Render(ctx context.Context, cluster *StretchCl // Use the canonical cluster name so that labels are identical regardless // of which operator instance (local vs remote) performs the reconciliation. - canonicalName := CanonicalClusterName(clusterName, m.mgr) + canonicalName := CanonicalClusterName(clusterName, m.mgr.GetLocalClusterName) // Apply operator-level default images to pools that don't specify their own. applyDefaultImage := defaultImage(m.redpandaImage) @@ -84,10 +84,10 @@ func (m *StretchNodePoolRenderer) IsNodePool(object client.Object) bool { return isNodePool(object) } -func CanonicalClusterName(clusterName string, mgr multicluster.Manager) string { +func CanonicalClusterName(clusterName string, getLocalClusterName func() string) string { canonicalName := clusterName if canonicalName == mcmanager.LocalCluster { - canonicalName = mgr.GetLocalClusterName() + canonicalName = getLocalClusterName() } return canonicalName } diff --git a/operator/internal/lifecycle/stretch_cluster_simple_resources.go b/operator/internal/lifecycle/stretch_cluster_simple_resources.go index 94cbc177d..b69388635 100644 --- a/operator/internal/lifecycle/stretch_cluster_simple_resources.go +++ b/operator/internal/lifecycle/stretch_cluster_simple_resources.go @@ -47,7 +47,7 @@ func (m *StretchClusterSimpleResourceRenderer) Render(ctx context.Context, clust // Use the canonical cluster name so that labels are identical regardless // of which operator instance (local vs remote) performs the reconciliation. - canonicalName := CanonicalClusterName(clusterName, m.mgr) + canonicalName := CanonicalClusterName(clusterName, m.mgr.GetLocalClusterName) applyDefaultImage := defaultImage(m.redpandaImage) applyDefaultSidecar := defaultImage(m.sideCarImage) diff --git a/pkg/multicluster/raft.go b/pkg/multicluster/raft.go index a5520524c..1766b7844 100644 --- a/pkg/multicluster/raft.go +++ b/pkg/multicluster/raft.go @@ -256,7 +256,7 @@ func NewRaftRuntimeManager(config RaftConfiguration) (Manager, error) { } c, err := cluster.New(kubeConfig, func(o *cluster.Options) { o.Scheme = config.Scheme - o.Logger = config.Logger + o.Logger = config.Logger.WithName("clusterProvider").WithValues("peerName", peer.Name) }) if err != nil { return nil, err @@ -268,7 +268,7 @@ func NewRaftRuntimeManager(config RaftConfiguration) (Manager, error) { if peer.Kubeconfig != nil { c, err := cluster.New(peer.Kubeconfig, func(o *cluster.Options) { o.Scheme = config.Scheme - o.Logger = config.Logger + o.Logger = config.Logger.WithName("clusterProvider").WithValues("peerName", peer.Name) }) if err != nil { return nil, err @@ -288,7 +288,7 @@ func NewRaftRuntimeManager(config RaftConfiguration) (Manager, error) { ElectionTimeout: config.ElectionTimeout, HeartbeatInterval: config.HeartbeatInterval, GRPCMaxBackoff: config.GRPCMaxBackoff, - Logger: &raftLogr{logger: config.Logger}, + Logger: &raftLogr{logger: config.Logger.WithName("raft")}, } if config.Bootstrap { @@ -332,7 +332,7 @@ func NewRaftRuntimeManager(config RaftConfiguration) (Manager, error) { opts := manager.Options{ Scheme: config.Scheme, LeaderElection: config.LocalLeaderElection != nil, - Logger: config.Logger, + Logger: config.Logger.WithName("multicluster-manager"), WebhookServer: config.Webhooks, BaseContext: config.BaseContext, } @@ -403,7 +403,7 @@ func NewRaftRuntimeManager(config RaftConfiguration) (Manager, error) { config.Logger.Info("initializing cluster for peer", "peer", peer.Name) c, err := cluster.New(kubeConfig, func(o *cluster.Options) { o.Scheme = config.Scheme - o.Logger = config.Logger + o.Logger = config.Logger.WithName("clusterProvider").WithValues("peerName", peer.Name) }) if err != nil { config.Logger.Error(err, "initializing cluster for peer", "peer", peer.Name) @@ -424,7 +424,7 @@ func NewRaftRuntimeManager(config RaftConfiguration) (Manager, error) { } } - manager, err := newManager(config.Name, config.LocalLeaderElection != nil, config.Logger, restConfig, clusterProvider, broadcaster, func() string { + manager, err := newManager(config.Name, config.LocalLeaderElection != nil, config.Logger.WithName("manager"), restConfig, clusterProvider, broadcaster, func() string { return idsToNames[currentLeader.Load()] }, func() map[string]cluster.Cluster { clusters := map[string]cluster.Cluster{} @@ -504,11 +504,11 @@ func newManager(localClusterName string, localLeaderElection bool, logger logr.L return nil }) - runnable := &leaderRunnable{manager: manager, logger: logger, broadcaster: broadcaster, getClusters: getClusters, needsLocalLeaderElection: localLeaderElection} + runnable := &leaderRunnable{manager: manager, logger: logger.WithName("leader-runnable"), broadcaster: broadcaster, getClusters: getClusters, needsLocalLeaderElection: localLeaderElection} if err := mgr.Add(runnable); err != nil { return nil, err } - return &raftManager{Manager: mgr, manager: manager, runnable: runnable, logger: logger, localClusterName: localClusterName, getLeader: getLeader, getClusters: getClusters, addOrReplaceCluster: addOrReplaceCluster}, nil + return &raftManager{Manager: mgr, manager: manager, runnable: runnable, logger: logger.WithName("raft-manager"), localClusterName: localClusterName, getLeader: getLeader, getClusters: getClusters, addOrReplaceCluster: addOrReplaceCluster}, nil } func (m *raftManager) Add(r mcmanager.Runnable) error { From 753f1aea0969042a4ca184aab0ffdb2b181990d9 Mon Sep 17 00:00:00 2001 From: Rafal Korepta Date: Mon, 13 Apr 2026 17:20:33 +0200 Subject: [PATCH 04/10] operator: Pass context to CheckScale and add pool identity to its log CheckScale logged at Info level using context.Background(), which both spammed logs during normal scaling operations and lost the request- scoped logger (with its ContextFree filtering and trace correlation). Accept a context.Context parameter, lower the log level to Debug, and add poolName and clusterName fields so the log line identifies which pool is still mid-scale. --- .../internal/controller/redpanda/multicluster_controller.go | 2 +- .../internal/controller/redpanda/redpanda_controller.go | 2 +- operator/internal/lifecycle/pool.go | 6 ++++-- operator/internal/lifecycle/pool_test.go | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/operator/internal/controller/redpanda/multicluster_controller.go b/operator/internal/controller/redpanda/multicluster_controller.go index d4a1e6f9f..93603826d 100644 --- a/operator/internal/controller/redpanda/multicluster_controller.go +++ b/operator/internal/controller/redpanda/multicluster_controller.go @@ -650,7 +650,7 @@ func (r *MulticlusterReconciler) reconcilePools(ctx context.Context, state *stre trace.EndSpan(span, err) }() - if !state.pools.CheckScale() { + if !state.pools.CheckScale(ctx) { logger.V(log.TraceLevel).Info("scale operation currently underway") // we're not yet ready to scale, so just requeue return ctrl.Result{RequeueAfter: requeueTimeout}, nil diff --git a/operator/internal/controller/redpanda/redpanda_controller.go b/operator/internal/controller/redpanda/redpanda_controller.go index 70c46ea4f..5cffd2fac 100644 --- a/operator/internal/controller/redpanda/redpanda_controller.go +++ b/operator/internal/controller/redpanda/redpanda_controller.go @@ -392,7 +392,7 @@ func (r *RedpandaReconciler) reconcilePools(ctx context.Context, state *clusterR trace.EndSpan(span, err) }() - if !state.pools.CheckScale() { + if !state.pools.CheckScale(ctx) { logger.V(log.TraceLevel).Info("scale operation currently underway") // we're not yet ready to scale, so just requeue return ctrl.Result{RequeueAfter: requeueTimeout}, nil diff --git a/operator/internal/lifecycle/pool.go b/operator/internal/lifecycle/pool.go index 4eec5b68c..ea76b8a6e 100644 --- a/operator/internal/lifecycle/pool.go +++ b/operator/internal/lifecycle/pool.go @@ -206,7 +206,7 @@ func (p *PoolTracker) DesiredStatefulSets() []string { // CheckScale checks if scaling operations can proceed based on the current state of pools. // It returns true if scaling is allowed (i.e. no scaling operation is currently in progress). -func (p *PoolTracker) CheckScale() bool { +func (p *PoolTracker) CheckScale(ctx context.Context) bool { // if we have no existing pools if len(p.existingPools) == 0 { return true @@ -216,11 +216,13 @@ func (p *PoolTracker) CheckScale() bool { replicas := ptr.Deref(pool.set.Spec.Replicas, 0) if replicas != pool.set.Status.Replicas || int(replicas) != len(pool.pods) { // we're potentially in the middle of a scaling operation - log.FromContext(context.Background()).Info( + log.FromContext(ctx).V(log.DebugLevel).Info( "Checking pool scale returns false", "replicas", replicas, "pool.set.Status.Replicas", pool.set.Status.Replicas, "len(pool.pods)", len(pool.pods), + "poolName", pool.set.GetName(), + "clusterName", pool.set.GetCanonicalClusterName(), ) return false } diff --git a/operator/internal/lifecycle/pool_test.go b/operator/internal/lifecycle/pool_test.go index c1a4ad40a..e7b7285dc 100644 --- a/operator/internal/lifecycle/pool_test.go +++ b/operator/internal/lifecycle/pool_test.go @@ -128,7 +128,7 @@ func TestPoolTrackerCheckScale(t *testing.T) { tracker := NewPoolTracker(0) tracker.addExisting(tt.existingPools...) - require.Equal(t, tt.canScale, tracker.CheckScale()) + require.Equal(t, tt.canScale, tracker.CheckScale(t.Context())) }) } } From c07152ead5b028b7a0ff1006b052e525922714b8 Mon Sep 17 00:00:00 2001 From: Rafal Korepta Date: Mon, 13 Apr 2026 17:29:28 +0200 Subject: [PATCH 05/10] operator: Move all zero check of the node pool after scale down and statefulset deletion When Stretchcluster and node pools are tearing down, the statefulset was never deleted. That was preventing node pool custom resource from being deleted. --- .../controller/redpanda/multicluster_controller.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/operator/internal/controller/redpanda/multicluster_controller.go b/operator/internal/controller/redpanda/multicluster_controller.go index 93603826d..fd2cdebc2 100644 --- a/operator/internal/controller/redpanda/multicluster_controller.go +++ b/operator/internal/controller/redpanda/multicluster_controller.go @@ -738,10 +738,6 @@ func (r *MulticlusterReconciler) reconcileDecommission(ctx context.Context, stat trace.EndSpan(span, err) }() - if state.pools.AllZero() { - return reconcile.Result{}, nil - } - health, err = r.fetchClusterHealth(ctx, state.admin) if err != nil { return ctrl.Result{}, errors.Wrap(err, "fetching cluster health") @@ -779,6 +775,13 @@ func (r *MulticlusterReconciler) reconcileDecommission(ctx context.Context, stat } } + if state.pools.AllZero() { + // When there is no desired node pool the cluster is tearing down, so + // no pods needs to be roll over. + logger.V(log.TraceLevel).Info("no desired node pool found") + return reconcile.Result{}, nil + } + // finally, we make sure we roll every pod that is not in-sync with its statefulset rollSet := state.pools.PodsToRoll() rolled := false From 476d864d06b28fb0f5b546b952a10976996d9ed1 Mon Sep 17 00:00:00 2001 From: Rafal Korepta Date: Mon, 13 Apr 2026 17:30:42 +0200 Subject: [PATCH 06/10] operator: Move AllZero check after StatefulSet deletion during teardown When a StretchCluster was being torn down, the AllZero() early return at the top of reconcileDecommission exited before reaching the ToDelete() loop. StatefulSets with zero replicas were never deleted, which blocked their owning NodePool custom resources from being garbage collected. Move the AllZero check after the scale-down and StatefulSet deletion logic so that zero-replica sets are cleaned up before the function returns. --- operator/internal/controller/redpanda/nodepool_controller.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/operator/internal/controller/redpanda/nodepool_controller.go b/operator/internal/controller/redpanda/nodepool_controller.go index 4d0279d3c..6361f65c4 100644 --- a/operator/internal/controller/redpanda/nodepool_controller.go +++ b/operator/internal/controller/redpanda/nodepool_controller.go @@ -213,6 +213,7 @@ func (r *NodePoolReconciler) Reconcile(ctx context.Context, req mcreconcile.Requ // Examine if the object is under deletion if !pool.ObjectMeta.DeletionTimestamp.IsZero() { + logger.V(log.TraceLevel).Info("deleting finalizer") if controllerutil.RemoveFinalizer(pool, FinalizerKey) { if err := k8sClient.Update(ctx, pool); err != nil { logger.Error(err, "updating cluster finalizer") @@ -228,6 +229,7 @@ func (r *NodePoolReconciler) Reconcile(ctx context.Context, req mcreconcile.Requ // If any changes are made, persist the changes and immediately requeue to // prevent any cache / resource version synchronization issues. if controllerutil.AddFinalizer(pool, FinalizerKey) || feature.SetDefaults(ctx, feature.V2Flags, pool) { + logger.V(log.TraceLevel).Info("adding finalizer") if err := k8sClient.Update(ctx, pool); err != nil { logger.Error(err, "updating cluster finalizer or Annotation") return ignoreConflict(err) From be96b372bd99d433709388c195b22e787413d495 Mon Sep 17 00:00:00 2001 From: Rafal Korepta Date: Mon, 13 Apr 2026 17:44:04 +0200 Subject: [PATCH 07/10] operator: Accept *RaftConfiguration by pointer in NewRaftRuntimeManager RaftConfiguration is a large struct (rest.Config, logr.Logger, scheme, peers list, etc.). Passing it by value copied all fields on every call. Change the parameter to a pointer to avoid the unnecessary copy. --- operator/internal/testenv/testenv.go | 2 +- pkg/multicluster/raft.go | 2 +- pkg/multicluster/raft_engage_test.go | 2 +- pkg/multicluster/raft_test.go | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/operator/internal/testenv/testenv.go b/operator/internal/testenv/testenv.go index a81afd18d..11e168c3f 100644 --- a/operator/internal/testenv/testenv.go +++ b/operator/internal/testenv/testenv.go @@ -290,7 +290,7 @@ func (e *Env) SetupMulticlusterManager(serviceAccount string, address string, pe config.Impersonate.UserName = fmt.Sprintf("system:serviceaccount:%s:%s", e.Namespace(), serviceAccount) } - manager, err := multicluster.NewRaftRuntimeManager(multicluster.RaftConfiguration{ + manager, err := multicluster.NewRaftRuntimeManager(&multicluster.RaftConfiguration{ Name: e.Name, Address: address, Peers: peers, diff --git a/pkg/multicluster/raft.go b/pkg/multicluster/raft.go index 1766b7844..f079ecf33 100644 --- a/pkg/multicluster/raft.go +++ b/pkg/multicluster/raft.go @@ -212,7 +212,7 @@ func (r RaftConfiguration) validate() error { // NewRaftRuntimeManager creates a Manager backed by raft-based cross-cluster // leader election. Only the raft leader's manager starts controller runnables. -func NewRaftRuntimeManager(config RaftConfiguration) (Manager, error) { +func NewRaftRuntimeManager(config *RaftConfiguration) (Manager, error) { if err := config.validate(); err != nil { return nil, err } diff --git a/pkg/multicluster/raft_engage_test.go b/pkg/multicluster/raft_engage_test.go index 7a7da8d43..b47e94c94 100644 --- a/pkg/multicluster/raft_engage_test.go +++ b/pkg/multicluster/raft_engage_test.go @@ -124,7 +124,7 @@ func setupEngageTestClusters(t *testing.T, ctx context.Context, logger logr.Logg env := kubetest.NewEnv(t) rctx, rcancel := context.WithCancel(ctx) - mgr, err := multicluster.NewRaftRuntimeManager(multicluster.RaftConfiguration{ + mgr, err := multicluster.NewRaftRuntimeManager(&multicluster.RaftConfiguration{ Name: peers[i].Name, Address: peers[i].Address, Peers: peers, diff --git a/pkg/multicluster/raft_test.go b/pkg/multicluster/raft_test.go index f693eddb9..f1f150bdd 100644 --- a/pkg/multicluster/raft_test.go +++ b/pkg/multicluster/raft_test.go @@ -169,7 +169,7 @@ func setupClusters(t *testing.T, ctx context.Context, logger logr.Logger, numClu replicaName := fmt.Sprintf("%s-r%d", clusterName, j) rctx, rcancel := context.WithCancel(ctx) - mgr, err := multicluster.NewRaftRuntimeManager(multicluster.RaftConfiguration{ + mgr, err := multicluster.NewRaftRuntimeManager(&multicluster.RaftConfiguration{ Name: clusterName, Address: peers[i].Address, Peers: peers, From 6f9216784bb9cbbd03bf9cc335073bd574d60168 Mon Sep 17 00:00:00 2001 From: Rafal Korepta Date: Mon, 13 Apr 2026 17:45:30 +0200 Subject: [PATCH 08/10] operator: Use absolute path in Dockerfile ENTRYPOINT The distroless base image has no $PATH, so the relative command "redpanda-operator" cannot be resolved. Normally the Helm chart overrides the entrypoint via the pod spec command field, but when the command is cleared (e.g. for dlv debugging) the container falls back to the Dockerfile ENTRYPOINT and fails with "executable file not found in $PATH". Use the absolute path "/redpanda-operator" to match where the binary is installed (line 11). --- operator/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/operator/Dockerfile b/operator/Dockerfile index c886ba173..810c0cc59 100644 --- a/operator/Dockerfile +++ b/operator/Dockerfile @@ -15,4 +15,4 @@ COPY redpanda-operator-${TARGETOS}-${TARGETARCH} /redpanda-operator # that still specify old entrypoints/commands. COPY alias-${TARGETOS}-${TARGETARCH} /manager -ENTRYPOINT ["redpanda-operator", "run"] +ENTRYPOINT ["/redpanda-operator", "run"] From b02a522322dd0a1d39c73296ddcc890cb92b1a4a Mon Sep 17 00:00:00 2001 From: Rafal Korepta Date: Tue, 14 Apr 2026 10:07:41 +0200 Subject: [PATCH 09/10] operator: Handle nil admin client in fetchClusterHealth When no NodePool custom resources exist in any cluster, the admin client is not initialized (no Redpanda brokers to connect to). fetchClusterHealth previously panicked on the nil pointer when calling admin.GetHealthOverview. Return an empty health overview instead, since cluster health is irrelevant when no brokers are running. --- .../internal/controller/redpanda/multicluster_controller.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/operator/internal/controller/redpanda/multicluster_controller.go b/operator/internal/controller/redpanda/multicluster_controller.go index fd2cdebc2..abea8d6ee 100644 --- a/operator/internal/controller/redpanda/multicluster_controller.go +++ b/operator/internal/controller/redpanda/multicluster_controller.go @@ -1064,6 +1064,11 @@ func (r *MulticlusterReconciler) fetchClusterHealth(ctx context.Context, admin * var health rpadmin.ClusterHealthOverview + if admin == nil { + log.FromContext(ctx).Error(errors.New("no admin api"), "Admin must be initialized") + return health, nil + } + health, err = admin.GetHealthOverview(ctx) if err != nil { return health, err From 703c439f3a0970b67a9794896d7cd71d0de32a7b Mon Sep 17 00:00:00 2001 From: Rafal Korepta Date: Tue, 14 Apr 2026 10:14:04 +0200 Subject: [PATCH 10/10] operator: Add trace log when StretchCluster enters deletion Adds a trace-level log line at the start of the deletion path in Reconcile, making it easier to confirm in logs that the finalizer cleanup branch was entered. --- operator/internal/controller/redpanda/multicluster_controller.go | 1 + 1 file changed, 1 insertion(+) diff --git a/operator/internal/controller/redpanda/multicluster_controller.go b/operator/internal/controller/redpanda/multicluster_controller.go index abea8d6ee..6096d9187 100644 --- a/operator/internal/controller/redpanda/multicluster_controller.go +++ b/operator/internal/controller/redpanda/multicluster_controller.go @@ -153,6 +153,7 @@ func (r *MulticlusterReconciler) Reconcile(ctx context.Context, req mcreconcile. // Examine if the object is under deletion if !stretchCluster.ObjectMeta.DeletionTimestamp.IsZero() { + l.V(log.TraceLevel).Info("deletion timestamp is not zero. Resources cleanup and remove finalizer") // clean up all dependant resources if deleted, err := r.LifecycleClient.DeleteAll(ctx, state.cluster); deleted || err != nil { return r.syncStatus(ctx, cluster, state, ctrl.Result{}, err)